Website-Suche

Verwalten von Druckern und Treibern mit PowerShell in Windows 10/Server 2016


Im vorherigen Artikel haben wir uns die VBS-Skripte der alten Schule angesehen, mit denen sich Drucker und Druckvorgänge in allen Windows-Versionen, beginnend mit Windows XP, verwalten lassen. Heute betrachten wir typische Befehle zum Installieren, Verwalten und Entfernen von Druckern, Druckanschlüssen, Treibern und Warteschlangen mithilfe von PowerShell. Diese Möglichkeiten zur Druckerverwaltung über PowerShell CLI können in modernen Betriebssystemen verwendet werden - Windows 10/8.1 und Windows Server 2019/2016/2012 R2.

PowerShell-Modul: PrintManagement

Zusammen mit der Veröffentlichung von Windows 8.1 und Windows Server 2012 R2 veröffentlichte Microsoft eine neue Version von PowerShell 4.0 (ein Teil von Windows Management Framework 4.0), die die Liste der Windows-basierten Druckserver-Verwaltungs-Cmdlets erheblich erweiterte. Mit dem folgenden Befehl können Sie die vollständige Liste der im PrintManagement-Modul unter Windows 10 (PowerShell v5) verfügbaren Druck-, Treiber- und Druckwarteschlangenverwaltungs-Cmdlets abrufen:

Get-Command -Module PrintManagement

  • Add-Printer - neuen Drucker hinzufügen (installieren);

  • Add-PrinterDriver - neuen Druckertreiber installieren;

  • Add-PrinterPort - lokalen Druckanschluss erstellen;

  • Get-PrintConfiguration - Druckerkonfiguration anzeigen;

  • Get-Printer - zeigt die Liste der auf dem Computer installierten Drucker an;

  • Get-PrinterDriver - zeigt die Liste der installierten Treiber an;

  • Get-PrinterPort - zeigt die Liste der Druckeranschlüsse an;

  • Get-PrinterProperty - Druckereigenschaften anzeigen;

  • Get-PrintJob - Liste der Druckaufträge des Druckers abrufen;

  • Read-PrinterNfcTag - Druckerinformationen vom NFC-Tag abrufen;

  • Remove-Printer - Drucker entfernen;

  • Remove-PrinterDriver - Druckertreiber entfernen;

  • Remove-PrinterPort - Druckeranschluss entfernen;

  • Remove-PrintJob - einen Druckauftrag auf dem Drucker löschen;

  • Drucker umbenennen - Drucker umbenennen;

  • Restart-PrintJob - Druckauftrag neu starten;

  • Resume-PrintJob - setzt den angehaltenen Druckauftrag fort;

  • Set-PrintConfiguration - legt die Druckerkonfiguration fest;

  • Set-Printer - Druckerkonfiguration aktualisieren;

  • Set-PrinterProperty - Druckereigenschaften ändern;

  • Suspend-PrintJob - den Druckauftrag anhalten (pausieren);

  • Write-PrinterNfcTag - Informationen in das NFC-Tag schreiben.

Um detaillierte Informationen zur Syntax eines beliebigen Befehls zu erhalten, verwenden Sie den folgenden Befehl:

Get-Help <cmdlet_name> -Detailed

Beispiele für die Verwendung von Befehlen:

Get-Help < cmdlet_name> -Examples

Schauen wir uns einige Beispiele typischer Druckerverwaltungsaufgaben mit PowerShell in Windows 10 an.

Druckertreiber zum DriverStore hinzufügen

So listen Sie die Druckertreiber auf, die im Windows DriverStore installiert sind:

Get-PrinterDriver

Installieren Sie dann einen neuen Druckertreiber im System. Sie möchten beispielsweise den beliebten Druckertreiber „HP Universal Printing PCL 6“ installieren. Laut Dokumentation sollte der PowerShell-Befehl zum Hinzufügen eines Druckertreibers wie folgt lauten:

Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"

Beim Versuch, einen Treiber auf diese Weise zu installieren, erscheint jedoch die folgende Fehlermeldung:

Add-PrinterDriver : One or more specified parameters for this operation has an invalid value.At line:1 char:1+ Add-PrinterDriver -Name “HP Universal Printing PCL 6” -InfPath “C:\Di …+ ~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : InvalidArgument: (MSFT_PrinterDriver:ROOT/StandardCimv2/MSFT_PrinterDriver) [Add-PrinterDriver], CimException   + FullyQualifiedErrorId : HRESULT 0x80070057,Add-PrinterDriver

Es stellt sich heraus, dass der Treiber aus der INF-Datei nur installiert werden kann, wenn er bereits im DriverStore vorhanden ist. Es scheint, dass Sie mit dem Befehl „Add-PrinterDriver“ keinen Druckertreiber installieren können, der sich nicht im Treiberspeicher befindet. Um einen Treiber zum DriverStore hinzuzufügen, können Sie Folgendes verwenden:

  • das im vorherigen Artikel beschriebene VBS-Skript;

  • das Dienstprogramm - pnputil.exe. Der Befehl kann wie folgt aussehen:

    pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf 

    (installiert den spezifischen Druckertreiber) oder

    pnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf

    (installiert alle in den INF-Dateien gefundenen Treiber im angegebenen Verzeichnis);

  • das Cmdlet Add-WindowsDriver, das die Integration von Treibern in das Offline-Windows-Image ermöglicht.

Nachdem Sie einen Druckertreiber zum Treiber-Repository hinzugefügt haben, sollten Sie ihn auf dem Druckserver installieren:

Add-PrinterDriver -Name "HP Universal Printing PCL 6"

Tipp. Wie erfahren Sie, was Sie im Feld des Druckertreibernamens angeben sollten, wenn Sie den Treiber über PowerShell installieren? Der angegebene Druckertreibername muss genau mit dem internen Systemnamen übereinstimmen, andernfalls wird während der Treiberinstallation ein Fehler angezeigt. Sie können den korrekten Treibernamen herausfinden, indem Sie den Befehl get-printerdriver auf einem Computer verwenden, auf dem dieser Druckertreiber bereits installiert ist, oder indem Sie die INF-Datei des Treibers manuell untersuchen.

Wie installiere ich einen Drucker mit PowerShell?

Erstellen Sie einen IP-Port für einen Netzwerkdrucker (hier können Sie sowohl die IP-Adresse des Netzwerkdruckers als auch den Namen des Remote-Druckservers angeben):

Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"

Bevor Sie einen neuen IP-Druckanschluss hinzufügen, können Sie prüfen, ob dieser vorhanden ist:

$portName = "IP_192.168.10.26"
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) {
Add-PrinterPort -name $portName -PrinterHostAddress "192.168.10.26"
}

Mit Hilfe des folgenden Befehls werden wir einen neuen Drucker auf dem Computer installieren und freigeben:

Add-Printer -Name hp3027_Office1_Buh -DriverName "HP LaserJet M3027 MFP PCL6 Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp3027_1_BUh" -Published

Hinweis: Beachten Sie, dass Sie zum Ausführen desselben Vorgangs (Installieren und Freigeben eines Druckers) mithilfe von VBS-Skripten (Druck-Admin-Skripts) zwei verschiedene Befehle ausführen sollten.

Nachdem Sie diese Befehle ausgeführt haben, wird im System ein neuer freigegebener Drucker mit dem Namen „hp3027_Office1“ angezeigt.

Um den Drucker umzubenennen, führen Sie einfach den folgenden Befehl aus:

Rename-Printer -Name "hp3027_1_Buh" -NewName "hp3027_F1_Salary"

Installierte Drucker auf einem Druckserver auflisten

Lassen Sie uns die vollständige Liste der auf diesem Computer installierten Drucker anzeigen:

Get-Printer

Wie Sie sehen, zeigt der Befehl den Druckernamen, den Typ (lokal oder Netzwerk), den Treiber, den Druckanschluss und ob der Drucker freigegeben und im Active Directory veröffentlicht ist.

Die meisten PrintManagement-Cmdlets können zum Anzeigen des Status und zum Verwalten von Druckern, Treibern und Druckwarteschlangen auf Remotecomputern (Druckservern) verwendet werden. Der Name des Remote-Computers oder -Servers wird als Argument des Parameters -ComputerName angegeben.

Mit dem PowerShell-Befehl können Sie Informationen zu installierten Druckern auf einem Remotecomputer abrufen:

Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverName

Um nur eine Liste der freigegebenen Drucker anzuzeigen, verwenden Sie den folgenden Befehl:

Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl Name

Herstellen einer Verbindung zu einem im Netzwerk freigegebenen Drucker mit PowerShell

Um den freigegebenen Drucker vom Druckserver aus zu verbinden, verwenden Sie den folgenden Befehl:

Add-Printer -ConnectionName \\rome-prnt1\HP3027

Windows 10 verwendet den neuesten Drucker, der zum Drucken verwendet wurde, als Standarddrucker. Wenn Sie einen festen Standarddrucker verwenden möchten, führen Sie den folgenden Befehl aus:

Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 -Force

Um den Standarddrucker festzulegen, können Sie die folgenden Befehle verwenden:

$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)

Wie entferne ich einen Drucker mit PowerShell?

Um einen Drucker zu entfernen, müssen Sie den folgenden PowerShell-Befehl ausführen:

Remove-Printer -Name "hp3027_L1_O1"

Sie können einen bestimmten Treiber mit dem Cmdlet Remove-PrinterDriver entfernen:

Remove-PrinterDriver -Name "HP Universal Printing PCL 6"

Verwandte Artikel