Devices.vbs

′ Lo script cambia il valore della chiave di registro
′ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath
′ per includere nel path di sistema dove cercare i driver .inf
′ per le periferiche tutti i sotto percorsi assoluti che contengono
′ un file .inf della cartella C:\DriversPack

Dim wshShell: Set wshShell = CreateObject(“Wscript.Shell”)
Dim value, keyvalue
Set sfo = CreateObject(“Scripting.FileSystemObject”)

′ L′istruzione successiva serve per settare come path di esecuzione la cartella che contiene lo script.
′ Gli script se lanciati da HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce o dall′ unattend.xml assumono come path di esecuzione system32

wshShell.currentDirectory = left(sfo.GetParentFolderName(Wscript.ScriptFullName), _
len(sfo.GetParentFolderName(Wscript.ScriptFullName)))

′ Lo sript durante l′esecuzione memorizza i passi di esecuzione nel file di log C:\U_logtFile.txt

if sfo.FileExists (“C:\U_logtFile.txt”) then
Set logt = sfo.OpenTextFile(“C:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “inizio dello script postsysprep”)
logt.Close
else
Set logt = sfo.OpenTextFile(“C:\U_logtFile.txt”, 2, True)
logt.WriteLine(Now() & vbTab & “inizio dello script postsysprep”)
logt.Close
end if

strComputer = “.”

′ La funzione ricorsiva “regkeyvalue” prende come parametro il path assoluto di una cartella
′ della quale viene esplorato il suo contenuto e di tutte le sue sotto cartelle, e vengo restituiti
′ i path assoluti delle cartelle contenenti file .inf separati da un “;” e memorizzati in una stringa

value = regkeyvalue(“C:\DriversPack”)

keyvalue = “%SystemRoot%\inf” & value

′ La stringa con tutti i path degli .inf viene poi memorizzata nella chiave di registro
′ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath

WSHShell.Run “REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath /t REG_EXPAND_SZ /d ” & “””” & keyvalue & “””” & ” /f”

Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Modificata HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath”)
logt.Close

′ La funzione RmUnknown rimuove le periferiche sconosciute; esegue una query per controllare lo stato
′ delle periferiche quando lo stato restituisce “error” corrisponde ad un “dispositivo sconosciuto”
′ e vengono quindi rimosse con l′ausilio di un programma esterno richiamato dallo script
′ “devcon.exe remove” sempre tramite devcon si effettua il rescan delle periferiche dopo averle
′ rimosse con il comando “devcon.exe rescan” a questo punto i driver vengono ricercati dentro a tutti
′ i path riportati nella chiave di registro precedentemente indicata
′ “HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath”

Call RmUnknown

′ infine questo script aggiunge una chiave di registro vbLauncher
′ HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce il cui valore è il path dello script che consente
′ al primo logon di configurare la scheda di rete ed effettuare il join al dominio

WSHShell.Run “REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce /v vbLauncher /t REG_SZ /d C:\Admin\DinamicNetworkEjoin.vbs /f”

Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Aggiunta Chiave di registro runonce per l′inserimmento IP e join al Dominio”)
logt.Close

Function regkeyvalue(folder)

Dim fso, subfolder, files, elemFolder, elemFile, FileItem, newpathinf

Set folder = sfo.GetFolder(folder)
Set files = folder.Files
Set subfolder = folder.Subfolders

For each elemFile in files
if((Right(elemFile,4)) = “.inf” AND newpathinf folder.Path ) then
newpathinf = folder.Path
regkeyvalue = regkeyvalue & “;” & newpathinf
end if
next

For each elemFolder in subfolder
regkeyvalue = regkeyvalue & regkeyvalue(elemFolder.Path)
next

End Function

Sub RmUnknown

Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
Set colItems = objWMIService.ExecQuery(“Select * from Win32_PnPEntity”,,48) ′ http://msdn.microsoft.com/en-us/library/aa394353%28v=vs.85%29.aspx#methods
if sfo.FileExists (“devcon.exe”) then
For Each objItem in colItems
if objItem.Status = “Error” then
command = “%SystemDrive%\Admin\devcon.exe remove ” & “””” & objItem.HardwareID(0) & “”””
wshShell.run command
end if
Next
wshShell.run “%SystemDrive%\Admin\devcon.exe rescan”
Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Remove e Rescan Dispositivi”)
logt.Close
else
Wscript.Echo “Manca devcon.exe per il Remove e Rescan Dei Dispositivi Sconosciuti”
Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “ERRORE: Reinstallazione Driver impossibile Manca devcon.exe”)
logt.Close
end if

End Sub

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...