Punti chiave
- Gestione semplificata delle stampanti di rete: Automatizza l’aggiunta o la rimozione di stampanti di rete, migliorando in modo significativo l’efficienza degli ambienti IT.
- Funzionalità PowerShell: Utilizza l’efficienza di PowerShell per la gestione delle stampanti, riducendo l’intervento manuale e gli errori.
- Requisito di privilegio amministrativo: Sottolinea la necessità di disporre di diritti amministrativi per eseguire le modifiche alla configurazione della stampante.
- Applicazione versatile: Adatto a diversi ambienti, dagli uffici aziendali agli istituti scolastici.
- Consapevolezza della sicurezza: Evidenzia l’importanza della sicurezza degli script per evitare modifiche non autorizzate all’impostazione di stampa.
- Facilità d’uso rispetto ai metodi manuali: Offre un approccio più dinamico e flessibile rispetto ai metodi tradizionali come l’impostazione manuale o le GPO per configurare la stampante di rete.
- Efficienza operativa: Facilita la configurazione uniforme delle stampanti su più postazioni di lavoro, risparmiando tempo e risorse.
- Compatibilità e requisiti: Supporta Windows 10 e Windows Server 2016 e versioni successive, garantendo un’ampia applicabilità.
- Automazione con NinjaOne: Dimostra come l’integrazione di tali script con NinjaOne possa semplificare ulteriormente le attività di gestione IT.
Introduzione
La gestione efficiente delle stampanti di rete è un aspetto fondamentale dell’infrastruttura IT delle organizzazioni. L’automazione dell’aggiunta o della rimozione delle stampanti tramite script PowerShell non solo semplifica il processo, ma aumenta anche la produttività e riduce al minimo gli errori umani. PowerShell, con le sue efficaci capacità di scripting, svolge un ruolo principale nell’automatizzazione delle attività di routine in ambito IT.
Background
Lo script in questione è progettato per aggiungere o rimuovere una stampante condivisa da una rete. Tale funzionalità è particolarmente importante per i professionisti IT e i fornitori di servizi gestiti (MSP) che gestiscono un gran numero di workstation client. Automatizzando questa attività, i team IT possono garantire a tutti gli utenti un accesso costante alle stampanti necessarie, riducendo i tempi di configurazione manuale e migliorando l’efficienza complessiva del flusso di lavoro.
Lo script per configurare la stampante di rete:
#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 { }
Accedi a oltre 700 script nel Dojo NinjaOne
Analisi dettagliata
Lo script opera in diverse fasi:
- Preparazione: Controlla i parametri necessari, come il server che ospita la stampante e il nome della stampante. Inoltre, verifica se lo script viene eseguito con privilegi amministrativi.
- Aggiunta o rimozione della stampante: Utilizza il cmdlet ‘Add-Printer’ per aggiungere una stampante o modifica lo script per rimuoverla. Inoltre, utilizza rundll32.exe e printui.dll per aggiungere la stampante a tutti gli utenti della rete.
- Gestione del driver e riavvio del servizio: Lo script recupera il driver di stampa dal server e lo aggiunge se non è già presente. Riavvia quindi il servizio ‘Print Spooler’, essenziale per attivare la stampante in rete.
- Fasi finali e opzione di riavvio: Dopo aver aggiunto la stampante, lo script visualizza lo stato. Se è impostato un flag di riavvio, viene programmato un riavvio del sistema per garantire che le modifiche abbiano effetto immediato.
Casi d’uso potenziali
Immagina un amministratore IT di una grande scuola che deve aggiungere una nuova stampante a tutti i computer di un laboratorio. Invece di aggiungere manualmente la stampante a ogni computer, l’amministratore esegue lo script, riducendo notevolmente i tempi di configurazione e assicurando che tutti i computer siano configurati in modo uniforme.
Confronti
Solitamente le stampanti di rete venivano aggiunte manualmente o tramite gli oggetti dei Criteri di gruppo (GPO) negli ambienti Windows. Lo script offre un approccio più diretto e con possibilità di scripting, consentendo modifiche dinamiche e aggiornamenti immediati, cosa che le GPO non fornire facilmente.
Domande frequenti
- D: Questo script può essere utilizzato su qualsiasi macchina Windows?
R: Supporta Windows 10 e Windows Server 2016 e versioni successive. - D: I privilegi amministrativi sono obbligatori per l’esecuzione di questo script?
R: Sì, per apportare modifiche alle impostazioni della stampante sono necessari i diritti di amministrazione.
Implicazioni
Se da un lato questo script semplifica la gestione delle stampanti, dall’altro comporta potenziali rischi per la sicurezza se viene utilizzato in modo improprio. L’accesso non autorizzato allo script potrebbe portare a modifiche indesiderate nell’ambiente della stampante. La gestione delle autorizzazioni e degli script è essenziale.
Raccomandazioni
- Aggiorna regolarmente lo script per adeguarlo all’evoluzione dell’ambiente di rete.
- Mantieni un controllo rigoroso dell’accesso allo script.
- Testa lo script in un ambiente controllato prima della distribuzione su larga scala.
Considerazioni finali
In un mondo in cui l’efficienza dell’IT è fondamentale, script come il presente esemplificano in che modo NinjaOne possa essere una risorsa preziosa. Con NinjaOne, i professionisti IT possono distribuire gli script su più dispositivi, monitorarne l’esecuzione e garantire prestazioni ottimali dell’infrastruttura IT. Questo script, combinato con le funzionalità di NinjaOne, rappresenta un passo significativo verso una gestione IT automatizzata ed efficiente.