Al lavoro, a seguito del trasloco di sede del cliente, mi sono trovato nella necessità di installare velocemente la nuova stampante di rete e di eliminare quelle vecchie che non erano più presenti. Per mia fortuna si trattava in tutti e due i casi di stampanti Kyocera perché la procedura utilizzata si adatta bene ai modelli di questa marca e, teoricamente, anche a quelli di altri produttori, ma ho riscontrato delle differenze nei driver forniti che non mi hanno permesso di provare e capire se potesse adattarsi in qualche modo. Se avete modelli di altre marche non vi resta che provare e vedere se trovate dei driver più adatti allo scopo di quelli che ho provato io.
I driver
Per prima cosa ho scaricato gli “universal driver kyocera”, basta cercarli su un motore di ricerca per essere rimandati a una pagina come questa. Potete anche cercare il modello preciso della stampante, nel mio caso era una Kyocera FS-C8520MFP, ma tanto si deve sempre scaricare l’archivio “KX Universal Printer Driver (v.8.4.1716)
”.
Ora estraiamo il contenuto dell’archivio zip in una cartella a nostra scelta e usiamo il comando Get-ChildItem -Recurse -Filter "*.inf" | Select-Object FullName
per individuare il giusto file .inf che contiene i driver.
Nel mio caso è D:\Driver\Kx84_UPD_8.4.1716_en_RC5_WHQL\64bit\OEMSETUP.INF
, gli altri sono per la versione a 32 bit e per le CPU Arm.
Ora bisogna aprire il file OEMSETUP.INF, nella cartella appena individuata, per leggere il nome corretto della stampante che dobbiamo installare. E’ un file di testo e Notepad di Windows va benissimo per aprirlo, la lista dei nomi nel “Model Sections” è molta lunga quindi è meglio usare la ricerca testo per trovarlo. Nel mio caso si trattava della Kyocera FS-C8520MFP KX
.
Un altro commando che si può usare per estrarre il nome della stampante è questo: Dism.exe /online /Get-DriverInfo /driver:"D:\Driver\Kx84_UPD_8.4.1716_en_RC5_WHQL\64bit\oemsetup.inf"
.
Però, nel caso dei driver Kyocera, bisognerebbe reindirizzare l’output a un file di testo per poterlo leggere, perché è troppo lungo da consultare direttamente da PowerShell. Magari con altre marche di stampanti, con driver singoli, il risultato potrebbe essere diverso.
Installazione pacchetto driver
Per installare il pacchetto dei driver appena scaricati dobbiamo usare questo comando: PNPUtil.exe /add-driver "D:\Driver\Kx84_UPD_8.4.1716_en_RC5_WHQL\64bit\oemsetup.inf " /install
Se invece vogliamo cancellare questo pacchetto, perché non ci serve più o abbiamo sbagliato a installarlo, il comando è PNPUtil.exe /delete-driver "oem39.inf" /force
. Nel passaggio seguente dell’articolo vedremo il comando corretto per trovare il nome del file oemxx.inf da cancellare.
Per verificare se il pacchetto dei driver si è installato si usa il comando pnputil.exe /enum-drivers
, la lista che ne deriva è piuttosto lunga e bisogna quindi scorrere l’elenco con attenzione per trovarlo.
Aggiungiamo ora il driver della stampante a quelli disponibili nel sistema operativo: Add-PrinterDriver -Name "Kyocera FS-C8520MFP KX" -Verbose
Con Get-PrinterDriver
possiamo verificare che si sia installato.
Creazione della porta
Dato che si tratta di una stampante di rete è necessario creare la porta TCP/IP con l’indirizzo assegnato alla stampante Add-PrinterPort -Name "TCPPort:" -PrinterHostAddress "192.168.1.10" -ErrorAction SilentlyContinue
Installazione stampante
Come ultima operazione aggiungiamo la stampante: Add-Printer -Name "Stampante Kyocera" -ShareName "Stampante Kyocera FS-C8520" -PortName IP_192.168.1.10 -DriverName "Kyocera FS-C8520MFP KX"
Se andiamo a controllare ora, tra le stampanti disponibili ci sarà quella che abbiamo appena configurato.
Lo script
- Riassumendo quanto visto sino ad ora in uno script per PowerShell io ho utilizzato questi comandi:
Set-ExecutionPolicy remotesigned
Expand-Archive "d:\driver\KX_Universal_Printer_Driver.zip" -DestinationPath "d:\driver" -Force
Invoke-Command {pnputil.exe -a "d:\driver\Kx84_UPD_8.4.1716_en_RC5_WHQL\64bit\OEMSETUP.inf" }
Add-PrinterDriver -Name "Kyocera FS-C8520MFP KX"
Get-PrinterDriver
Add-PrinterPort -Name "IP_192.168.1.10" -PrinterHostAddress "192.168.1.10"
Start-Sleep 20
Add-Printer -Name "Stampante Kyocera" -ShareName "Stampante Kyocera FS-C8520" -PortName IP_192.168.1.10 -DriverName "Kyocera FS-C8520MFP KX"
# Configura la stampante come quella di default, se non vi serve cancellate le due righe o commentatele
$printer = Get-CimInstance -Class Win32_Printer -Filter "Name='Stampante Kyocera'"
Invoke-CimMethod -InputObject $printer -MethodName SetDefaultPrinter
Rimuovere la stampante
Se vogliamo eliminare una stampante e il suo driver ci servono questi due comandi:
Remove-Printer -Name "Stampante Kyocera" -Verbose
Remove-PrinterDriver -Name "Kyocera FS-C8520MFP KX" -verbose
Possiamo aggiungere anche queste due, o più, righe di comando nello script visto in precedenza per eliminare le eventuali vecchie stampanti presenti.