Ich hole mir mit folgendem Code die SID des/der Nutzer, die remote am PC123 angemeldet sind.
$Computer = "PC123"
$UserSid = Get-WmiObject -Class win32_computersystem -ComputerName $Computer |
Select-Object -ExpandProperty Username |
ForEach-Object { ([System.Security.Principal.NTAccount]$_).Translate([System.Security.Principal.SecurityIdentifier]).Value }
$UserSid
Funktioniert alles sauber, und ich erhalte eine SID in der Form "S-1-5-21-690765346...".
Nun möchte ich zu dieser SID alle installierten Drucker anzeigen lassen, die in der entfernten Registry stehen unter HKEY_USERS\$UserSid\Software\Microsoft\Windows NT\CurrentVersion\Devices. Dazu nutze ich das Invoke-Command.
Invoke-Command -ComputerName $Computer -ScriptBlock { gci "registry::HKEY_USERS\$UserSid\Software\Microsoft\Windows NT\CurrentVersion\Devices" }
Klappt aber nicht wegen:
Der Pfad "HKEY_USERS\\Software\Microsoft\Windows NT\CurrentVersion\Devices" kann nicht gefunden werden, da er nicht vorhanden ist.
+ CategoryInfo : ObjectNotFound: (HKEY_USERS\\Sof...Version\Devices:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
+ PSComputerName : PC123
Gebe ich $UserSid ein am Prompt, wird mir die korrekte S-1-5-21-690765346... angezeigt. Wie muss ich die Variable maskieren, um Erfolg zu haben? Mit den Zeichen " ", ' ', { } hat es leider nicht funktioniert. Gebe ich in dem Befehl oben die SID in Klars***rift ein, erhalte ich zwar keine Ausgabe, aber auch nicht diesen Fehler.
Vielen Dank.
G.