DinamicNetworkEjoin.vbs

′ Script che cerca di configurare automaticamente le interfacce di rete con macaddress
′ specificato nel file macIP.txt oppure propone le interfacce di rete attive e chiede
′ quale di queste si vuole configurare, infine cerca di effettuare il join al dominio
′ produce log nel file C:\U_logtFile.txt

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 Network e Join”)
logt.Close
else
Set logt = sfo.OpenTextFile(“C:\U_logtFile.txt”, 2, True)
logt.WriteLine(Now() & vbTab & “inizio dello script Network e Join”)
logt.Close
end if

strComputer = “.”

′ La funzione IPfromMac legge dal file macIP.txt contenuto nella stessa cartella dello script.
′ Nel file in ogni riga ci sono memorizzati macaddress ip separati da uno spazio:
′ es: 00:17:42:xx:xx:xx 192.168.3.3. Il file viene letto una riga alla volta e se il macaddress
′ di una delle schede di rete del pc dove viene eseguita la funzione corrisponde ad uno di quelli
′ contenuti nel file assegna a quella scheda l’ip corrispondente al macaddress

′ La funzione IPManual consente di inserire manualmente ip, netmask e gateway tramite interfaccia
′ grafica.

strAnswer = msgbox (“Vuoi tentare l’assegnazione automatica dell’indirizzo IP?”, vbYesNo)

if strAnswer = vbYes then
IPfromMac
elseif strAnswer = vbNo then
strAnswer = msgbox (“inserire l’indirizzo IP?”, vbYesNo)
if strAnswer = vbYes then
IPManual
elseif strAnswer = vbNo then
msgbox (“Operazione Annullata dall’Utente”)
end if
end if

Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Terminata Sezione Indirizzo IP”)
logt.Close

′ Tramite la seguente porzione di codice si controlla se nella cartella corrente è presente
′ il file devicepath.reg che viene utilizzato per ripristinare il valore originale della
′ chiave HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath è stato adottato questo
′ metodo perchè passare il valore “%SystemRoot%\inf” tramite script reimposta il valore a
′ C:\Windows\inf perchè viene tradotta la variabile d’ambiente mentre il valore originale
′ della chiave di registro è %SystemRoot%\inf

if sfo.FileExists (“devicepath.reg”) then
WSHShell.Run “regedit.exe /s %SystemDrive%\Admin\devicepath.reg”
Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Ripristinata HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath”)
logt.Close
else
Wscript.Echo “Manca il File .reg per ripristinare la chiave di registro DevicePath”
Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “ERRORE: Impossibile Ripristinare HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath Valore Originale:(%SystemRoot\inf%)”)
logt.Close
end if

′ Ora lo script libera lo spazio su disco utilizzato temporaneamente come repository per i driver non
′ inglobati nel sistema, viene anche cancellata la cartella contenente gli script e i file d’ausilio
′ agli script

WSHShell.Run “cmd.exe /c rmdir /S /Q %SystemDrive%\DriversPack\”
WSHShell.Run “cmd.exe /c rmdir /S /Q %SystemDrive%\Admin\”

Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Effetuate le Eliminazioni delle cartelle DriversPack Admin e il link”)
logt.Close

′ infine viene eseguito lo script che effettua il join al dominio se la scheda di rete è correttamente
′ configurata al termine il pc viene riavviato

Call DoDomain

Set logt = sfo.OpenTextFile(“c:\U_logtFile.txt”, 8, True)
logt.WriteLine(Now() & vbTab & “Terminata Sezione DOMINIO”)
logt.Close

Sub IPfromMac

if sfo.FileExists (“macIP.txt”) then
Set tst = sfo.OpenTextFile(“macIP.txt”, 1, false)

While Not tst.AtEndOfStream
line = tst.readLine
′WScript.Echo line
mac = Left(line,17)
′WScript.Echo mac
ip = mid(line, 19, ((len(line))-18))
′WScript.Echo ip
If strComputer “” Then
End if
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2?)
Set colItems = objWMIService.ExecQuery _
(“Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True”)

For Each objItem in colItems
If objItem.MACAddress = mac Then
strIPAddress = array(ip)
strSubnetMask = array(“255.255.255.0?)
arraySplit = split(ip,”.”)
strGateway = array(arraySplit(0) & “.” & arraySplit(1) & “.” & arraySplit(2) & “.254?)
′WScript.Echo strGateway(0)
strGatewayMetric = array(1)
errEnable = objItem.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objItem.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo “L’indirizzo IP è stato cambiato.”
Else
WScript.Echo “L’indirizzo IP non puo’ essere cambiato.”
End If
Exit Sub ′esce dalla funzione quando trova il mac e assegna l’ip alla scheda con il mac corrispondante
End If
Next
′mac 00:17:42:xx:xx:xx
Wend
IPMAnual
else
IPMAnual
end if
End Sub

Sub IPManual

Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2?)
Set colNetAdapters = objWMIService.ExecQuery _
(“Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE”)
for each objNetAdapter in colNetAdapters

strAnswer = msgbox (“Vuoi configurare la scheda di rete: ” & objNetAdapter.Description & “?”, vbYesNo)

if strAnswer = vbYes then
IPAddress = inputbox(“Indirizzo IP:”, “Indirizzo IP”, “192.168.”)
if IPAddress = vbNullString then
msgbox (“Operazione Annullata dall’Utente”)
else
strIPAddress = array(IPAddress)
SubnetMask = inputbox(“Netmask:”, “Netmask”, “255.255.255.0?)
if SubnetMask = vbNullString then
msgbox (“Operazione Annullata dall’Utente”)
else
strSubnetMask = array(SubnetMask)
arraySplit = split(IPAddress,”.”)
Gateway = inputbox(“Gateway:”, “Gateway”, arraySplit(0) & “.” & arraySplit(1) & “.” & arraySplit(2) & “.254?)
if Gateway = vbNullString then
msgbox (“Operazione Annullata dall’Utente”)
else
strGateway = array(Gateway)
strGatewayMetric = array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo “L’indirizzo IP è stato cambiato.”
Else
WScript.Echo “L’indirizzo IP non puo’ essere cambiato.”
End If
end if
end if
end if
strAnswer3 = msgbox (“Vuoi terminare la configurazione di rete?”, vbYesNo)
if strAnswer3 = vbYes Then
exit for
end if
elseif strAnswer = vbNo Then
strAnswer2 = msgbox (“Vuoi terminare la configurazione di rete?”, vbYesNo)
if strAnswer2 = vbYes Then
exit for
end if
end if
next

End Sub

Sub DoDomain

Dim strPassword
Dim strDomain
Dim strUser

Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144

′ specificare qui sotto Dominio utente Domain Admin del Dominio e la Password dell’utente

strDomain = “DOMINIO”
strUser = “DOMAIN_ADMIN”
strPassword = “DOMAIN_ADMIN_PASSWORD”

Set objNetwork = CreateObject(“WScript.Network”)
strComputer = objNetwork.ComputerName

Set objComputer = GetObject(“winmgmts:{impersonationLevel=Impersonate}!\\” & strComputer & “\root\cimv2:Win32_ComputerSystem.Name=’” & strComputer & “′”)

Do

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, strDomain & “\” & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE)

If ReturnValue = 1326 Then
MsgBox “Atuenticazione Fallia: nome utente sconosciuto o password sbagliata.”
End If

If ReturnValue 1326 Then Exit Do
Loop

If ReturnValue = 5 Then
MsgBox “Access is denied. Run from an elevated command prompt.”
Exit Sub
ElseIf ReturnValue = 87 Then
MsgBox “The parameter is incorrect.”
Exit Sub
ElseIf ReturnValue = 110 Then
MsgBox “The system cannot open the specified object.”
Exit Sub
ElseIf ReturnValue = 1323 Then
MsgBox “Unable to update password.”
Exit Sub
ElseIf ReturnValue = 1355 Then
MsgBox “The specified domain does not exist or could not be contacted.”
Exit Sub
ElseIf ReturnValue = 2224 Then
MsgBox “The account already exists.”
Exit Sub
ElseIf ReturnValue = 2691 Then
MsgBox “The machine is already joined to the domain.”
Exit Sub
ElseIf ReturnValue = 2692 Then
MsgBox “The machine is not currently joined to the domain.”
Exit Sub
End If

If ReturnValue = 0 Then
If MsgBox(“Domain joined successfully. Restart machine?”, vbQuestion + vbYesNo) = vbYes Then
Set OpSysSet = GetObject(“winmgmts:{(Shutdown)}//./root/cimv2?).ExecQuery(“select * from Win32_OperatingSystem where Primary=true”)
For Each OpSys in OpSysSet
OpSys.Reboot()
Next
Else
′Just quit
End If
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...