koehne
Goto Top

Wer nutzt welchen Standarddrucker?

Hallo liebes Forum,

wir haben auf unserem W2008 Server R2 den Druckserver eingerichtet. Die User können, wie so oft, selbst Ihren Standarddrucker auswählen.

Gibt es eine Möglichkeit in unserem Domänennetzwerk alle Clientrechner auf den verwendeten Standarddrucker zu prüfen?

MfG Koehne

Content-ID: 252156

Url: https://administrator.de/contentid/252156

Ausgedruckt am: 18.11.2024 um 01:11 Uhr

colinardo
colinardo 16.10.2014 aktualisiert um 18:32:33 Uhr
Goto Top
Hallo Koehne,
mit folgendem Powershell-Script kannst du dir die Standarddrucker von den gerade eingeschalteten Rechnern anzeigen lassen:
$computers = Get-ADComputer -Filter * | select -ExpandProperty Name
write-host "Ermittle Online-Status der Computer ..." -ForegroundColor Green  
$online = Test-Connection -ComputerName $computers -Count 1 -ErrorAction SilentlyContinue | select IPV4Address, Address
$offline = compare $computers ($online | select -Expand Address) -PassThru

$defaultPrinters = @()
write-host "Ermittle Daten von den Computern ..." -ForegroundColor Green  
$online | %{
    $printerName = ""  
    Try{
        $remotereg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('CurrentUser', $_.IPv4Address)  
        $key = $remotereg.OpenSubKey('Software\Microsoft\Windows NT\CurrentVersion\Windows')  
        $printerName = $key.GetValue("Device")  
    }catch{
        $printerName = ""  
    }

    $defaultPrinters += new-Object PSObject -Property @{"Computername"=$_.Address;"DefaultPrinter"=$printerName}  
}

$defaultPrinters
write-host "`n$('-'*20)`nFolgende Computer waren offline:" -ForegroundColor Yellow  
$offline

Grüße Uwe
koehne
koehne 16.10.2014 um 15:12:49 Uhr
Goto Top
Erstmal vielen Dank Uwe.
Leider bin ich mit Powershell nicht so bewandert, habe es aber trotzdem mal versucht.
Wenn ich die Zeilen so auf dem Server eingebe, durchsucht der scheinbar automatisch das AD nach allen Rechnern, auch ohne Schleife?!

Allerdings kann er nur für den Server den richtigen Standarddrucker ermitteln, bei allen anderen Rechnern (allerdings nicht alle die Verfügbar sind) wir eine Fehlermeldung ausgegeben:

"Get-WmiObject : Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)
Bei Zeile:1 Zeichen :100
Get-AdComputer -Filter * | %{write-host "Auf Computer '$_.Name' lautet der Standarddrucker: "((gwmi Win32_Printer -ComputerName $_.DNSHostname -Filter 'Default = True').Name)}

back-to-topCategoryInfor: InvalidOperation: (face-smile [Get-WmiObject], COMException

back-to-topFullyQualifiedErrorId: GetWMICOMExcepton,Microsoft.PowerShell.Commands.GetWmiObjectCommand


Leider bin ich dabei vollkommen überfragt.... hoffe ich nerv dich nicht zu sehr damit.

MfG Koehne
colinardo
colinardo 16.10.2014 aktualisiert um 15:18:59 Uhr
Goto Top
Zitat von @koehne:
Leider bin ich mit Powershell nicht so bewandert, habe es aber trotzdem mal versucht.
Wenn ich die Zeilen so auf dem Server eingebe, durchsucht der scheinbar automatisch das AD nach allen Rechnern, auch ohne
Schleife?!
Das Script holt sich die Rechnernamen aus dem AD (mit Get-ADComputer) und übergibt sie an die Schleife (%{} ist die Schleife face-wink)
Allerdings kann er nur für den Server den richtigen Standarddrucker ermitteln, bei allen anderen Rechnern (allerdings nicht
alle die Verfügbar sind) wir eine Fehlermeldung ausgegeben:
Dann hat entweder der gerade verwendete User-Account keine Admin-Rechte auf den Clients oder die Firewalls der Clients ist zu restriktiv eingestellt, Remote WMI-Ausnahme oder Datei und Druckerfreigabe-Ports nicht freigegeben.

Grüße Uwe
koehne
koehne 16.10.2014 um 16:24:53 Uhr
Goto Top
Hallo,

das Skript wurde als Administrator auf dem Server ausgeführt. WMI ist per GPO freigegeben (Windows-Firewall: Eingehende Remoteverwaltungsausnahme zulassen) und Druckerfreigabe (Portfreigabe etc.) ist auch in der Firewall gesetzt. Deswegen wundert mich das jetzt etwas.
colinardo
colinardo 16.10.2014 aktualisiert um 18:33:18 Uhr
Goto Top
Habe das Script korrigiert, das vorherige hatte nur lokale Drucker aufgelistet, sorry. Dass jetzige holt den Standarddrucker aus der Registry und überprüft zusätzlich vorher die Erreichbarkeit der PCs. Zum Schluss listet es die Drucker mit zugehörigem Rechner und separat zusätzlich die Rechner, welche nicht via Ping erreicht werden konnten.

Dein Remote-Problem behebt das natürlich nicht. Da muss bei euch noch etwas nicht ganz stimmen.
koehne
koehne 20.10.2014 um 10:41:04 Uhr
Goto Top
Danke für deine Mühen leider funktioniert das Skript noch nicht wie gehofft es zeigt jetzt die Drucker der Clients an aber nur die lokal installierten, wie PDF Drucker oder Peer USB angeschlossene Geräte.
Drucker die per Druckserver eingerichtet sind werden nicht angezeigt wie z.B. \\Server-01\Drucker-x. Ich habe auch in der Registry nachgesehen diese sind bei dem entsprechenden wert richtig eingetragen sie werden aber vom Script nicht ausgegeben.

Woran könnte das liegen?
colinardo
colinardo 20.10.2014 aktualisiert um 11:10:22 Uhr
Goto Top
Zitat von @koehne:

Danke für deine Mühen leider funktioniert das Skript noch nicht wie gehofft es zeigt jetzt die Drucker der Clients an
aber nur die lokal installierten, wie PDF Drucker oder Peer USB angeschlossene Geräte.
hier läufts einwandfrei,sorry ... auch wenn ein Netzwerkdrucker ein Default-Drucker ist.