Frage von wkp125, 75

Via Powershell Druckertreiber anpassen?

folgende habe ich schon geschrieben:

$a = Get-WMIObject Win32_Printer -Filter "Name = 'Druckername' " $a.DriverName = "Treiber"                                                                       $a.Put()

dieses Scrip setzt mir aber den Treiber nur bei einem Drucker.

Ich möchte nun bei allen Druckern auf dem PC nach denen mit einem z.B HP-Treiber suchen und nur bei diesen den Treiber ändern.

Wie stelle ich das am geschicktesten an?

Danke und Gruß wkp125

Antwort
von wkp125, 51

ich möchte ja nicht vorher meine drucker auflisten, da es sehr viele drucker auf einem printserver sind

ich möchte alle druckerobjekte durchgehen, nach den druckern mit dem druckertreiber HP* suchen und dann den Treiber ändern

Kommentar von Etter ,

Dann arbeite doch mit Wildcards.

if ($a.DriverName -like "HP*") {bla}

Damit gilt die if-Bedingung für jeden Drucker, welcher einen Treiber hat, der mit "HP" beginnt.

Antwort
von Etter, 51

Was macht $a.put() ?

Das kannst du mit einer foreach-Schleife, 2 Arrays und nem Switch-Statement verwirklichen.

Sollte so funzen, musst halt nur das Array und das switch-Statement anpassen :

https://bitbucket.org/snippets/Ettar/prkoy

Würde mich über Feedback freuen.

Kommentar von wkp125 ,

Meine Drucker kann ich in keiner Printerlist auflisten, da es hunderte Drucker sind.

Jetzt habe ich folgendes geschrieben:

$a = Get-WMIObject Win32_Printer -Property Name, DriverName
$Printer = Get-WMIObject Win32_Printer

foreach ($a in $Printer) {

if("$a.DriverName = 'Epson AL-2600'")
    {
    $a.DriverName = "HP 910"
    $a.Put()
    }
}

Das funktioniert auch bei mehreren Druckern, aber leider auch bei denen die nicht wie im Beispiel oben den Epson AL-2600 haben.

Kannst du mir nochmal helfen? Ich möchte wirklich nur bei denen den Treiber ändern, die z.B den Epson AL-2600 haben.

Nicht wundern, die oben angegebenen Druckertreiber sind nur zum Test.

Danke und Gruß wkp125

Kommentar von Etter ,

"if("$a.DriverName = 'Epson AL-2600'")"

Warum haste die Bedingung in Anführungszeichen geschrieben? Ich schätze mal, dass da n Fehler vorliegt.

Probier mal if($a.DriverName = 'Epson AL-2600') aus.

Antwort
von wkp125, 43

$a.put() setzt mir meinen neu definierten Drivername

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten