Die wichtigsten Erkenntnisse
- Optimierte Verwaltung von Netzwerkdruckern: Automatisiert das Hinzufügen oder Entfernen von Netzwerkdruckern, was die Effizienz in IT-Umgebungen erheblich steigert.
- PowerShell-Funktionen: Nutzt die Leistungsfähigkeit von PowerShell für die Verwaltung von Druckern und reduziert so manuelle Eingriffe und Fehler.
- Erfordernis von Administratorrechten: Das Skript erfordert Administratorrechte für die Durchführung von Änderungen an der Druckerkonfiguration.
- Vielseitigkeit in der Anwendung: Geeignet für verschiedene Umgebungen, von Unternehmensbüros bis zu Bildungseinrichtungen.
- Sicherheitsbewusstsein: Hebt die Bedeutung der Skriptsicherheit hervor, um unbefugte Änderungen am Drucker-Setup zu verhindern.
- Benutzerfreundlicher als manuelle Methoden: Bietet einen dynamischeren und flexibleren Ansatz im Vergleich zu traditionellen Methoden wie manueller Einrichtung oder GPOs.
- Operative Effizienz: Ermöglicht eine einheitliche Druckerkonfiguration über mehrere Workstations hinweg und spart so Zeit und Ressourcen.
- Kompatibilität und Anforderungen: Unterstützt Windows 10, Windows Server 2016 und höher, um eine breite Anwendbarkeit zu gewährleisten.
- Automatisierung mit NinjaOne: Die Integration solcher Skripte in NinjaOne kann IT-Verwaltungsaufgaben weiter rationalisieren.
Vorwort
Die effiziente Verwaltung von Netzwerkdruckern ist ein wichtiger Aspekt der IT-Infrastruktur in Unternehmen. Die Automatisierung des Hinzufügens oder Entfernens von Druckern mithilfe von PowerShell-Skripten rationalisiert nicht nur den Prozess, sondern steigert auch die Produktivität und minimiert menschliches Versagen. PowerShell und seine robusten Skripterstellungs-Funktionen spielen eine zentrale Rolle bei der Automatisierung von Routineaufgaben im IT-Bereich.
Kontext
Das thematisierte Skript dient zum Hinzufügen oder Entfernen eines gemeinsam genutzten Druckers in einem Netzwerk. Diese Funktionalität ist besonders wichtig für IT-Expert:innen und Managed Service Provider (MSPs), die eine große Anzahl von Workstations verwalten. Durch die Automatisierung dieser Aufgabe können IT-Teams sicherstellen, dass alle Benutzer:innen konsistenten Zugang zu den benötigten Druckern haben, was die manuelle Einrichtungszeit reduziert und die Effizienz des gesamten Arbeitsablaufs verbessert.
Das Skript zur Verwaltung von Netzwerkdruckern
#Requires -Version 5.1 <# .SYNOPSIS Adds a shared printer from a server on the network as an "All User Printer". .DESCRIPTION Adds a shared printer from a server on the network as an "All User Printer". .EXAMPLE -Server 'PrintServer.example.com' -Name 'LobbyPrinter' WARNING: Waiting for service 'Print Spooler (Spooler)' to start... Restarted print Spooler service. Adding printer complete. WARNING: A restart is required for this script to take immediate effect. PARAMETER: -Server 'PrintServer.example.com' Server name that is hosting the shared printer. Required. PARAMETER: -Name 'LobbyPrinter' Name of the printer that is being shared. Required. .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 10, Windows Server 2016 Release Notes: Initial Release By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). #> [CmdletBinding()] param ( [Parameter()] [String]$Server, [Parameter()] [String]$Name, [Parameter()] [Switch]$Remove = [System.Convert]::ToBoolean($env:removePrinter), [Parameter()] [Switch]$Restart = [System.Convert]::ToBoolean($env:forceRestart) ) begin { function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator) } if ($env:server -and $env:server -notlike "null") { $Server = $env:server } if ($env:printerName -and $env:printerName -notlike "null") { $Name = $env:printerName } Write-Host "" if (-not $Server) { Write-Host "[Error] Please specify a Server." exit 1 } if (-not $Name) { Write-Host "[Error] Please specify a Printer Name." exit 1 } $ProcessTimeOut = 10 } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } try { $StartTime = Get-Date $AddOrRemove = if($Remove){"/gd"}else{"/ga"} Add-Printer -Connection "\\$Server\$Name" $Printer = Get-Printer -ComputerName $Server -Name $Name $PrinterDriver = Get-PrinterDriver -Name $Printer.DriverName -ComputerName $Server # rundll32.exe printui.dll, PrintUIEntry /ga /n\\$Server\$Name $Process = Start-Process -FilePath "C:\WINDOWS\system32\rundll32.exe" -ArgumentList @( "printui.dll,", "PrintUIEntry", $AddOrRemove, "/n`"\\$Server\$Name`"" ) -PassThru -NoNewWindow # Wait for process to exit while (-not $Process.HasExited) { if ($StartTime.AddMinutes($ProcessTimeOut) -lt $(Get-Date)) { Write-Error -Message "[Error] rundll32.exe printui.dll took longer than $ProcessTimeOut minutes to complete." -Category LimitsExceeded -Exception (New-Object System.TimeoutException) exit 1 break } Start-Sleep -Milliseconds 100 } Add-PrinterDriver -Name $PrinterDriver.Name Restart-Service -Name Spooler if ($(Get-Service -Name Spooler).Status -like "Running") { Write-Host "Restarted print Spooler service." Write-Host "Adding printer complete." } else { Write-Host "[Error] Failed to restart Spooler service." exit 1 } if($Restart){ Write-Warning "A restart was requested scheduling restart for 60 seconds from now." Start-Process shutdown.exe -ArgumentList "/r /t 60" -Wait -NoNewWindow }else{ Write-Warning "A restart may be required for this script to take immediate effect." } } catch { Write-Error $_ Write-Host "[Error] Failed to add network printer." exit 1 } exit 0 } end { }
Greifen Sie auf über 300 Skripte im NinjaOne Dojo zu.
Detaillierte Aufschlüsselung
Das Skript arbeitet in mehreren Schritten:
- Vorbereitung: Es überprüft auf Administratorrechte und auf die erforderlichen Parameter wie den Server, auf dem der Drucker gehostet wird, und den Druckernamen.
- Hinzufügen oder Entfernen von Druckern: Es verwendet das Cmdlet ‚Add-Printer‘ zum Hinzufügen eines Druckers oder ändert das Skript zum Entfernen. Außerdem verwendet es rundll32.exe zusammen mit printui.dll, um den Drucker für alle Benutzer:innen im Netzwerk hinzuzufügen.
- Treiberverwaltung und Dienstneustart: Das Skript holt den Druckertreiber vom Server und installiert ihn, falls er noch nicht vorhanden ist. Anschließend wird der Dienst ‚Print Spooler‘ neu gestartet, der für die Aktivierung des Druckers im Netzwerk unerlässlich ist.
- Letzte Schritte und Neustart-Option: Nachdem der Drucker erfolgreich hinzugefügt wurde, gibt das Skript den Status aus. Wenn ein Neustart-Flag gesetzt ist, wird ein Neustart des Systems geplant, um sicherzustellen, dass die Änderungen sofort wirksam werden.
Mögliche Anwendungsfälle
Stellen Sie sich einen IT-Administrator an einer großen Schule vor, der einen neuen Drucker für alle Computer in einem Labor hinzufügen muss. Anstatt den Drucker manuell zu jedem Computer hinzuzufügen, führt der Administrator dieses Skript aus, was die Einrichtungszeit erheblich verkürzt und sicherstellt, dass alle Computer einheitlich konfiguriert sind.
Vergleiche
Traditionell wurden Netzwerkdrucker in Windows-Umgebungen manuell oder über Gruppenrichtlinienobjekte (GPOs) hinzugefügt. Dieses Skript bietet vergleichsweise einen direkteren und skriptfähigen Ansatz, der dynamische Änderungen und spontane Updates ermöglicht, was mit GPOs nicht so einfach möglich ist.
FAQs
- F: Kann dieses Skript auf jedem Windows-Rechner verwendet werden?
A: Es unterstützt Windows 10, Windows Server 2016 und höher. - F: Sind für die Ausführung dieses Skripts Administratorrechte erforderlich?
A: Ja, um Änderungen an den Druckereinstellungen vorzunehmen, sind Administratorrechte erforderlich.
Folgen
Dieses Skript vereinfacht zwar die Druckerverwaltung, birgt aber auch potenzielle Sicherheitsrisiken, wenn es missbraucht wird. Unbefugter Zugriff auf das Skript könnte zu unerwünschten Änderungen in der Druckumgebung führen. Eine ordnungsgemäße Verwaltung von Berechtigungen und Skripten ist unerlässlich.
Empfehlungen
- Aktualisieren Sie das Skript regelmäßig, um es an die sich entwickelnde Netzwerkumgebung anzupassen.
- Setzen Sie strenge Zugangskontrollen für das Skript durch.
- Testen Sie das Skript in einer kontrollierten Umgebung, bevor Sie es in großem Umfang einsetzen.
Abschließende Überlegungen
In einer Welt, in der IT-Effizienz an erster Stelle steht, zeigen Skripte wie dieses, dass NinjaOne ein wertvolles Asset sein kann. Mit NinjaOne können IT-Expert:innen Skripte auf mehrere Geräte verteilen, ihre Ausführung überwachen und eine optimale Leistung der IT-Infrastruktur sicherstellen. Dieses Skript, kombiniert mit den Fähigkeiten von NinjaOne, stellt einen bedeutenden Schritt in Richtung automatisiertes und effizientes IT-Management dar.