nedogin

Powershell Netzwerkdrucker als Standarddrucker

Moin,

ich möchte ein Anmelde Script erstellen (Powershell), welches Netzwerkdrucker hinzufügt und Standarddrucker setzt.

Das hinzufügen über einen Freigabe-Pfad geht soweit.

$DruckerFreigabe = "\\server01\HP LaserJet Professional P1606dn"  
Add-Printer -ConnectionName $DruckerFreigabe

Wie kann ich nun den Standarddrucker setzten?

Ich habe schon folgendes probiert:
$DruckerFreigabe = "\\server01\HP LaserJet Professional P1606dn"  
$strQuery = "Select * from Win32_Printer Where DeviceID = ""$DruckerFreigabe"""  
$Drucker = Get-WmiObject -Query $strQuery
$Drucker.SetDefaultPrinter()

Leider bekomme ich folgenden Fehler:
Get-WmiObject : Die Anfrage ist ungültig. "Select * from Win32_Printer Where DeviceID = "\\server01\HP LaserJet Professional P1606dn""  
In Zeile:4 Zeichen:12
+ $Drucker = Get-WmiObject -Query $strQuery
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
 
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In Zeile:5 Zeichen:1
+ $Drucker.SetDefaultPrinter()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Der Drucker ist aber erfolgreich auf dem System installiert.
ergebnis der abfrage 2017-11-23 08.20.44

Ich habe meinen String auch schon mit vier Backslashs versehen...ändert nichts
Auch andere "Wehre" Bedienungen helfen nicht.

Wenn ich in der Query nach "Fax" suche bekomme ich eine Rückgabe.

Wie kann ich meinen Freigabe-Drucker als Standard hinterlegen?

Danke im voraus.

Nedogin
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 355739

Url: https://administrator.de/forum/powershell-netzwerkdrucker-als-standarddrucker-355739.html

Ausgedruckt am: 27.04.2025 um 17:04 Uhr

em-pie
Lösung em-pie 23.11.2017 um 09:04:40 Uhr
Goto Top
Nedogin
Nedogin 23.11.2017 um 09:36:00 Uhr
Goto Top
Danke.... Das hatte ich noch nicht gesehen. Ich habe die wichtigsten Zeilen genommen und etwas umgeschrieben... jetzt gehts
Nedogin
Nedogin 23.11.2017 um 09:38:09 Uhr
Goto Top
Meine Lösung sieht nun so aus:
$DruckerFreigabe = "\\server01\HP LaserJet Professional P1606dn"  
Add-Printer -ConnectionName $DruckerFreigabe
$Printers = Get-WmiObject -Class Win32_Printer
$Printer = $Printers | Where{$_.DeviceID -eq "$DruckerFreigabe"}  
$Printer.SetDefaultPrinter()

Dank geht raus an em-pie
Nedogin
Nedogin 23.11.2017 um 15:57:36 Uhr
Goto Top
Leider konnte dass das Problem doch nicht Lösen....

auf meiner Test VM hat es geklappt. Das Problem ist aber das sich auf der Arbeitsumgebung die "DeviceID" un der "Name" ändert.
Where{$_.DeviceID -eq "$DruckerFreigabe" geht also nicht mehr
weil, "\\server01\prt020-01" zu DeviceID="Raum 020 (Geschäftsführung) auf server01" wird (verhält sich mit "Name" genau so)

Ich muss wissen wie der Drucker heißen wird bevor ich ihn Verbinde????

verzweifelte Grüße
Nedogin
134464
134464 23.11.2017 aktualisiert um 16:55:54 Uhr
Goto Top
Na z.B. so:
$share = "\\server01\HP LaserJet Professional P1606dn"  
Add-Printer -ConnectionName $share
gwmi win32_printer | ?{"$($_.ServerName)\$($_.ShareName)" -eq $share} | %{$_.SetDefaultPrinter()}  
Einfach mal die verfügbaren Eigenschaften auf der Konsole ausgeben lassen und was dazu lernen face-wink.