Semplifica la gestione delle stampanti di rete con lo scripting PowerShell

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

Ottieni l’accesso

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. 

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

Guarda una demo×
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.