nedogin
Goto Top

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

Content-Key: 355739

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

Printed on: April 19, 2024 at 12:04 o'clock

Member: em-pie
Solution em-pie Nov 23, 2017 at 08:04:40 (UTC)
Goto Top
Member: Nedogin
Nedogin Nov 23, 2017 at 08:36:00 (UTC)
Goto Top
Danke.... Das hatte ich noch nicht gesehen. Ich habe die wichtigsten Zeilen genommen und etwas umgeschrieben... jetzt gehts
Member: Nedogin
Nedogin Nov 23, 2017 at 08:38:09 (UTC)
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
Member: Nedogin
Nedogin Nov 23, 2017 at 14:57:36 (UTC)
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
Mitglied: 134464
134464 Nov 23, 2017 updated at 15:55:54 (UTC)
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.