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

Admin

Im Vorheriger Artikelhaben 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 Drucker entfernen, Druckanschlüsse, Treiber 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.

Inhalt:

  • PowerShell-Modul: PrintManagement
  • Druckertreiber zum DriverStore hinzufügen
  • Wie installiere ich einen Drucker mit PowerShell?
  • Installierte Drucker auf einem Druckserver auflisten
  • Herstellen einer Verbindung zu einem im Netzwerk freigegebenen Drucker mit PowerShell
  • Wie entferne ich einen Drucker mit PowerShell?

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 des Windows Management Framework 4.0), wodurch die Liste der Windows-basierten Druckserververwaltung erheblich erweitert wurde Cmdlets. 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

Powershell-Modul PrintManagementDas PrintManagement-Modul umfasst 22 PowerShell-Cmdlets zum Verwalten von Druckern, Treibern, Druckanschlüssen und Warteschlangen:

  • Drucker hinzufügen – neuen Drucker hinzufügen (installieren);
  • Add-PrinterDriver – Neuen Druckertreiber installieren;
  • Add-PrinterPort – lokalen Druckport erstellen;
  • Get-PrintConfiguration – Druckerkonfiguration anzeigen;
  • Drucker abrufen – die Liste der auf dem Computer installierten Drucker anzeigen;
  • Get-PrinterDriver – die Liste der installierten Treiber anzeigen;
  • Get-PrinterPort – zeigt die Liste der Druckeranschlüsse an;
  • Get-PrinterProperty – Druckereigenschaften anzeigen;
  • Get-PrintJob – eine Liste der Druckaufträge des Druckers abrufen;
  • Read-PrinterNfcTag – Druckerinformationen vom NFC-Tag abrufen;
  • Drucker entfernen – Entfernen Sie den Drucker.
  • Remove-PrinterDriver — Entfernen Sie den Druckertreiber.
  • Remove-PrinterPort – Entfernen Sie den Druckeranschluss.
  • Remove-PrintJob – einen Druckauftrag auf dem Drucker löschen;
  • Drucker umbenennen – Benennen Sie den Drucker um.
  • PrintJob neu starten – Starten Sie den Druckauftrag neu.
  • Resume-PrintJob – den angehaltenen Druckauftrag fortsetzen;
  • Set-PrintConfiguration – Legen Sie die Druckerkonfiguration fest.
  • Set-Drucker – Aktualisieren Sie die Druckerkonfiguration;
  • Set-PrinterProperty – Druckereigenschaften ändern;
  • Suspend-PrintJob – den Druckauftrag anhalten (pausieren);
  • Write-PrinterNfcTag – Informationen in den NFC-Tag schreiben.

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

Get-Help -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

Installierte Druckertreiber mit Powershell auflisten

Installieren Sie dann einen neuen Druckertreiber im System. Sie möchten beispielsweise den beliebten Druckertreiber „HP Universal Printing PCL 6“ installieren. Der Dokumentation zufolge 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: Einer oder mehrere angegebene Parameter für diesen Vorgang haben einen ungültigen Wert. In Zeile: 1 Zeichen: 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,Druckertreiber hinzufügen
Fehler beim Installieren des Druckertreibers mit dem Powershell-Cmdlet 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:

  • Die VBS-Skript im vorherigen Artikel beschrieben;
  • der Nutzen – 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);pnputil – Druckertreiber im Treiberspeicher installieren
  • das Cmdlet Add-WindowsDriver Dies ermöglicht die Integration von Treibern in das Offline-Windows-Image.

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"

Add-PrinterDriver PowerShell
Spitze. 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. Den richtigen Treibernamen können Sie mit dem herausfinden get-printerdriver Befehl auf einem Computer, auf dem dieser Druckertreiber bereits installiert ist, oder indem Sie die INF-Datei des Treibers manuell untersuchen.Name des Druckertreibers in der INF-Datei

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 installieren wir und Aktie ein neuer Drucker am Computer:

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

Netzwerkdrucker mit IP-Port installieren

Notiz: 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.

show-printers-windows8

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.

Get-Printer: Lokale Drucker mit Powershell auflisten

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

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 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"

Ausgabe in Protokolldateien in PowerShell-Skript schreiben
Ausgabe in Protokolldateien in PowerShell-Skript schreiben

Sie können einfache Textprotokolldateien verwenden, um die Ausführung zu steuern und alle Aktivit...

Verwalten von Gruppenrichtlinien (GPO) in Active Directory mit PowerShell
Verwalten von Gruppenrichtlinien (GPO) in Active Directory mit PowerShell

Das wichtigste Tool zum Verwalten von Gruppenrichtlinienobjekten (GPOs) in einer Active Directory...

So verbinden und verwalten Sie Exchange Online mit PowerShell
So verbinden und verwalten Sie Exchange Online mit PowerShell

PowerShell ist ein primäres Verwaltungstool sowohl für lokale Exchange Server-Organisationen als ...