Consulenze tecnologiche e informatiche
Esportare i driver di Windows 10 grazie a Powershell e Autotask

Esportare i driver di Windows 10 grazie a Powershell e Autotask

Qualche giorno fa mi sono trovato a leggere un articolo tecnico scritto da Marco Alzetta, nello specifico Reinstalliamo Windows 10, un trucchetto per risparmiare ore.

L’articolo indica la procedura per esportare i driver del sistema operativo mediante una cmdlet di Powershell, per poi poterli usare nel caso di reinstallazione del sistema operativo, semplicemente mantenendo il materiale su una chiavetta o in un altro punto da dove richiamarli nel momento del bisogno.

La procedura è in realtà utilizzabile a partire dal sistema operativo Microsoft Windows 8.1 e da Microsoft Server 2012 e successivi.

Il passaggio successivo dopo questa scoperta è stato quello di demandare ad Autotask Endpoint Managment (AEM) il salvataggio dei driver e la loro raccolta in un archivio compresso più facile da movimentare.

Questa è solo la prima parte, in un successivo articolo vedremo come automatizzare anche il salvataggio del pacchetto di driver ottenuto.

 

Esportare i driver

 

L’operazione di esportazione dei driver è semplice, la possiamo eseguire manualmente aprendo una console Powershell come administrator ed eseguendo il seguente comando.

Export-WindowsDriver -Online -Destination c:\tempAEM\drivers

La cartella di destinazione deve già esistere, nel mio caso la cartella di destinazione è quella già utilizzata da AEM per altre procedure, a cui si aggiunge il percorso drivers per raccogliere i file ottenuti.

La procedura di estrazione dura diversi minuti e può arrivare a generare diverse decine di repository, nel mio caso sono 134, il numero elevato è dovuto al fatto che i driver non sono solo quelli a noi noti per i dispositivi, ma anche quelli creati da taluni programmi per il loro funzionamento.

 

Integrazione con Autotask Endpoint Managment

 

A differenza di altre situazioni la procedura Powershell è abbastanza semplice.

Nella sezione iniziale acquisisco la variabile proveniente dal componente e definisco per semplicità i nomi dei percorsi e del file di destinazione della procedura.

  1. $ClearOld = $ENV:ClearOld
  2. $PathAEM = “c:\TempAEM”
  3. $PathDrivers = “c:\TempAEM\drivers”
  4. $File7z = “c:\TempAEM\drivers.zip”
Gestione dell'archiviazione dei driver con Powershell

Gestione dell’archiviazione dei driver con Powershell

Per poter utilizzare la variabile del componente all’interno dello script Powershell la devo acquisire come se fosse una variabile di ambiente, come vediamo alla riga 1.

A seguire troviamo i percorsi delle cartelle, nell’ordine: il percorso della cartella di lavoro di AEM; il percorso della cartella in cui salvare i driver e il percorso dove salvare l’archivio compresso compreso il nome del file.

L’idea originale era di adottare il software di compressione 7-Zip come file allegato al componente, per questa ragione il nome della variabile per il file di archivio è insolito. Successivamente ho proferito appoggiarmi al sistema operativo stesso e agli elementi messi a disposizione da Powershell, anche per non appesantire il componente o incappare in restrizioni di sicurezza sulle postazioni remote.

Nel passaggio successivo analizzo la consistenza della variabile del componente.

  1. if ([string]::IsNullOrEmpty($ClearOld) -or !($ClearOld -match ‘^\d+$’)) {
  2. write-host “ERRORE – Non e’ stato inserito un valore numerico nel campo ClearOld.”
  3. Exit 1
  4. }

Controllo che la variabile esista e che sia un valore numerico, questa variabile ha un doppio ruolo, infatti se il suo valore è 0 (zero) il componente genera l’archivio la prima volta e le successive chiude la procedura senza compiere azioni.

Posso inoltre assegnare alla variabile un valore che rappresenta il numero di giorni di conservazione del file di archivio, trascorsi i giorni indicati l’archivio viene distrutto e ne viene creato uno nuovo.

Entriamo nel vivo della procedura iniziando con il controllo della presenza del file di archivio, dove se il file di archivio esiste interrompo la procedura di esportazione, per farlo interrogo direttamente il sistema (Riga 9).

  1. if ([System.IO.File]::Exists($File7z)) {
  2. if ($ClearOld -gt 0) {
  3. $ClearOld = -($ClearOld)
  4. $Now = Get-Date
  5. $Old = $Now.AddDays($ClearOld)
  6. $FolderList = Get-ChildItem $File7z | Where-Object { $_.LastWriteTime -lt $Old } | select Name | foreach { $_.Name }
  7. if ($FolderList) {
  8.   Remove-Item $File7z
  9. }
  10. else {
  11. write-host “Salvataggio driver presente”
  12. exit 0
  13. }
  14. }
  15. else {
  16. write-host “Salvataggio driver presente”
  17. exit 0
  18. }
  19. }

Nel caso in cui il file di archivio esiste e ho chiesto la verifica della sua vecchiaia (Riga 10), determino se il periodo trascorso dalla sua creazione è maggiore rispetto a quello specificato (Riga 14) ed in tal caso lo rimuovo (Riga 16).

Se non ho richiesto la verifica della vecchiaia o il file di archivio è più recente esco dalla provedura (Riga 25 e Riga 20).

Nella sezione finale controllo se è presente il percorso della cartella di appoggio di AEM e nel caso creo il ramo completo, compresa la cartella drivers.

Se la cartella di appoggio di AEM esiste mi limito a creare quella per i drivers.

  1. if (!(Test-Path $PathAEM)) {
  2. new-item -ItemType directory $PathDrivers
  3. }
  4. else {
  5. if (!(Test-Path $PathDrivers)) {
  6. cd $PathAEM
  7. new-item -ItemType directory drivers
  8. }
  9. }

A seguire possiamo lanciare l’esportazione dei driver installati, usando la cmdlet indicata in precedenza.

  1. Export-WindowsDriver -Online -Destination $PathDrivers

Il risultato finale di questa procedura potrebbe raggiungere delle dimensioni interessanti, anche di 4 o 5 giga byte, pertanto chiedo a Powershell di comprimere la cartella drivers.

  1. Compress-Archive -Path $PathDrivers -DestinationPath $File7z

Ottenuto l’archivio compresso mi posso sbarazzare della cartella che contiene tutti i driver ottenuti, la compressione tocca il 50%.

  1. Remove-Item $PathDrivers -recurse

 

Come li uso?

 

Quando installo il computer e nella lista dispositivi trovo il messaggio di driver non presente, mi basta scomprimere l’archivio e chiedere al sistema operativo di cercare un driver valido nel percorso dove ho il salvataggio.

 

Per maggiori dettagli vi rimando all’articolo di Marco Alzetta.

 

Scarica il componete da qui

 

Il tempo è denaro! O no?

 

Se sei interessato ad approfondire questi contenuti o ad avere nella tua aziende questi strumenti o i prodotti menzionati, contattaci attraverso la pagina di contatto di questo sito, o se preferisci cercami attraverso la pagina FaceBook o il mio profilo Linkedin.

Per essere informato sui nuovi articoli e contenuti puoi anche iscriverti alle nostre newsletter.

 

 

 

Categorie
Archivi
Count per Day
  • 33Questo articolo:
  • 86022Totale letture:
  • 63Letture odierne:
  • 199Letture di ieri:
  • 21 novembre 2016Dal:
Iscriviti alla Newsletter
Iscriviti alla nostra newsletter ed unisciti ai nostri iscritti.

Seleziona lista (o più di una):




Trattamento dei dati