Script per eliminazione stampanti locali

In ambiente Terminal Server Windows 2003 Server dovendo installare i driver delle stampanti locali degli utenti remoti a volte accade che si creano malfunzionamenti con il servizio di spooler di stampa.

Il motivo è normalmente un driver non compatibile con i Servizi Terminal, il problema quando sono stati installati numerosi driver è che diventa complesso identificare quale o quali.

Un workaround che trovato è quello di eseguire le seguenti operazioni:

  1. Arrestare il servizio di spooler
  2. Avviare il servizio di spooler
  3. Eliminare le stampanti degli utenti remoti installate all’atto della connessione RDP (e molto spesso quando si verifica il problema ve ne sono alcune relative a connessioni non più presenti)
  4. Arrestare il servizio di spooler
  5. Avviare il servizio di spooler

Dal momento che la procedura potrebbe essere ripetuta spesso conviene utilizzare uno script da eseguire quando si presenta il problema e da schedulare una volta al giorno ad esempio i ore notturne.

Un esempio può essere il seguente:

REM L’arresto genera nel log di sistema gli eventi Service Control Manager 7035 e 7036
REM L’avvio genera nel log di sistema gli eventi Service Control Manager 7035 e 7036

net stop spooler
net start spooler

DeletePrinters.vbs

net stop spooler
net start spooler

Dove DeletePrinters.vbs si occupa di eliminare le stampanti locali:

Set wmiService = GetObject(“winmgmts:\\.\root\cimv2”)
Set printers = wmiService.ExecQuery(“Select * From Win32_Printer”)

For Each printer in Printers
  printer.Delete_
Next
 
Set wmiService = Nothing
Set printers = Nothing