136430
18.06.2018, aktualisiert um 14:27:40 Uhr
20428
19
0
Powershell Netzwerkdrucker auflisten
Hallo zusammen,
ich möchte mit dem invoke-command bei einem remoteclient die installierten Netzwerkdrucker des Users abfragen. Nur klappt das leider nicht ganz. Ich kann ohne probleme die "lokal" installierten abfragen aber eben nicht die Netzwerkdrucker.
Als Workaround dachte ich mir, ich zapfe die Registry an mit HKEY_Users\Printers\Connections. Leider funktioniert mein script nicht.
Es sagt immer "kann nicht gefunden werden, da er nicht vorhanden ist. Evtl. könnt ihr mich berichtigen, oder habt eine viel elegantere Lösung? Ich brauche wirklich nur diese Information!
invoke-command -ComputerName Name -Credential Cred -ScriptBlock { Get-ChildItem Registry::\HKEY_Users\Printers\Connections }
Viele Grüße
ich möchte mit dem invoke-command bei einem remoteclient die installierten Netzwerkdrucker des Users abfragen. Nur klappt das leider nicht ganz. Ich kann ohne probleme die "lokal" installierten abfragen aber eben nicht die Netzwerkdrucker.
Als Workaround dachte ich mir, ich zapfe die Registry an mit HKEY_Users\Printers\Connections. Leider funktioniert mein script nicht.
Es sagt immer "kann nicht gefunden werden, da er nicht vorhanden ist. Evtl. könnt ihr mich berichtigen, oder habt eine viel elegantere Lösung? Ich brauche wirklich nur diese Information!
invoke-command -ComputerName Name -Credential Cred -ScriptBlock { Get-ChildItem Registry::\HKEY_Users\Printers\Connections }
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 377398
Url: https://administrator.de/contentid/377398
Ausgedruckt am: 15.11.2024 um 19:11 Uhr
19 Kommentare
Neuester Kommentar
Servus,
die Netzwerk-Drucker sind userabhängig gemappt. Per "Remote" ist es so das bei den unten stehenden CMDLets nur der SYSTEM-Teil der Registry abgefragt wird und nicht der Userteil der Registry mit den gerade verwendeten Credentials , deshalb tauchen die Netzwerkdrucker die der User gemappt hat darin nicht auf.
Hiermit kannst du für alle gerade auf dem Remote-System angemeldeten User deren Printer-Mappings auflisten lassen (sofern du dich mit passenden Rechten zum Auslesen der Registry am Remote-System authentifizierst):
Das ganze geht auch ohne Invoke-Command wenn man das wollte.
Grüße Uwe
die Netzwerk-Drucker sind userabhängig gemappt. Per "Remote" ist es so das bei den unten stehenden CMDLets nur der SYSTEM-Teil der Registry abgefragt wird und nicht der Userteil der Registry mit den gerade verwendeten Credentials , deshalb tauchen die Netzwerkdrucker die der User gemappt hat darin nicht auf.
Hiermit kannst du für alle gerade auf dem Remote-System angemeldeten User deren Printer-Mappings auflisten lassen (sofern du dich mit passenden Rechten zum Auslesen der Registry am Remote-System authentifizierst):
Invoke-Command -ComputerName 192.168.1.200 -Credential (Get-Credential) -ScriptBlock {
function Get-LoggedOnSids{
gwmi win32_LogonSession -Filter 'LogonType=2 or LogonType=10' | %{
gwmi -Query "Associators of {Win32_LogonSession.LogonId=$($_.LogonId)} Where AssocClass=Win32_LoggedOnUser Role=Dependent" | select Name,SID
}
}
Get-LoggedOnSids | %{
write-host "Gemappte Drucker für angemeldeten User '$($_.Name)':" -f Green
gci "REGISTRY::HKEY_USERS\$($_.SID)\Printers\Connections" -Name | %{$_.replace(',','\')}
}
}
Grüße Uwe
Als Alternative kannst du auch das hier hernehmen:
Lüpt dat bei dir auch nich, sind die Remote-Berechtigungen nich mehr Ideal-Standard nüch, na denn prooost. Ich geh jetzt mal die Kurve kratzen...
Invoke-Command -ComputerName <COMPUTERNAME> -Credential (get-credential) -ScriptBlock {
gwmi win32_process -Filter "Name = 'explorer.exe'" | %{$_.GetOwner().User} | select -Unique | %{
$sid = (New-Object System.Security.Principal.NTAccount($_)).Translate([System.Security.Principal.SecurityIdentifier]).Value
write-host "Gemappte Drucker für angemeldeten User '$_':" -f Green
gci "REGISTRY::HKEY_USERS\$sid\Printers\Connections" -Name | %{$_.replace(',','\')}
}
}
Lüpt dat bei dir auch nich, sind die Remote-Berechtigungen nich mehr Ideal-Standard nüch, na denn prooost. Ich geh jetzt mal die Kurve kratzen...
Zitat von @colinardo:
Als Alternative kannst du auch das hier hernehmen:
Lüpt dat bei dir auch nich, sind die Remote-Berechtigungen nich mehr Ideal-Standard nüch, na denn prooost. Ich geh jetzt mal die Kurve kratzen...
Als Alternative kannst du auch das hier hernehmen:
> Invoke-Command -ComputerName <COMPUTERNAME> -Credential (get-credential) -ScriptBlock {
> gwmi win32_process -Filter "Name = 'explorer.exe'" | %{$_.GetOwner().User} | select -Unique | %{
> $sid = (New-Object System.Security.Principal.NTAccount($_)).Translate([System.Security.Principal.SecurityIdentifier]).Value
> write-host "Gemappte Drucker für angemeldeten User '$_':" -f Green
> gci "REGISTRY::HKEY_USERS\$sid\Printers\Connections" -Name | %{$_.replace(',','\')}
> }
> }
>
Ist zwar schon was her aber wollte trotzdem nochmal Danke! schreiben - nach sowas habe ich schon lange gesucht.
Danke!