Script di PowerShell per reinstallare la stampante, impostare come predefinito se era predefinito


1

Abbiamo una stampante al lavoro che ci sta dando problemi. Abbiamo provato alcune soluzioni diverse ma quando un utente va a stampare su questa stampante Windows 7 a volte visualizza qualcosa del tipo:

Windows deve scaricare e installare un driver software dal ... computer

Tuttavia il PC ha già il driver corretto. Ho provato a modificare alcune impostazioni nella nostra politica di gruppo in base alle soluzioni emerse quando ho cercato questo problema, ma finora non ha funzionato nulla. Per ora penso che sarebbe meglio avere Windows reinstallare la stampante ogni volta che l'utente accede.

Voglio che la stampante sia impostata sulla stampante predefinita solo se l'utente l'ha già impostata come stampante predefinita. Come posso copiarlo in PowerShell?


"Voglio che la stampante sia impostata sulla stampante predefinita solo se l'utente l'ha già impostata come stampante predefinita." Questa parte sarà impossibile
soandos

Non impossibile, ma richiederebbe una soluzione che molte persone troverebbero sgradevole. È necessario memorizzare periodicamente nella cache la stampante predefinita. Il metodo più probabile sarebbe quello di fare in modo che uno script di login lo memorizzi nella cache in un file di testo. Quindi lo script di ripristino dovrebbe solo controllare lì per vedere se era il valore predefinito. Ciò significa che se l'utente rendesse la stampante problematica predefinita, la stampante presentava il problema prima dell'accesso successivo, lo script avrebbe sbagliato. L'OP dovrebbe determinare la probabilità di questo caso limite.
EBGreen

Vecchia domanda, tuttavia, se si tratta di una stampante di rete, sembra che il driver non venga richiamato al momento dell'accesso, piuttosto che essere disponibile per tutti gli utenti. Questo verrebbe normalmente risolto installando una stampante "locale" (ma usando il metodo cheat per puntare porta della stampante alla stampante in rete) utilizzando un account amministratore, indicando che la stampante è disponibile per tutti. i driver vengono quindi installati a livello di computer e il pr3inter è disponibile per tutti coloro che accedono?
Kinnectus

Risposte:


0

Ciò può essere ottenuto utilizzando WMI utilizzando la classe Win32_Printer . Di seguito è riportato un esempio usando PowerShell, puoi farlo anche in vbscript.

È possibile adattare lo script di seguito alle proprie esigenze. L'esempio presuppone che il driver sia chiamato "TOSHIBA e-STUDIO3510cSeriesPCL6"

$driver_name = 'TOSHIBA e-STUDIO3510cSeriesPCL6'

$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"

foreach ($printer in $printers) { 

    $printer.Delete()

    $return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus

    If ($return_status -eq 0 -and $printer.Default) { 

        (Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault() 
    }
}

Quello che fa lo script è interrogare quali stampanti stanno utilizzando un determinato driver e reinstallarle mantenendo lo stato predefinito della stampante, se necessario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.