Salve a tutti, ho scritto un piccolo script in vbscript per gestire la copia di alcuni file da una postazione ad n postazioni nella rete locale.
Funziona tutto, però l'ho testo con pochi pc e mi sono accorto che quando qualcosa non va (come ad esempio è fallita la copia) mi compare il messaggio di errore e interrompe tutto.
Nello script creo anche un file di log, e vorrei che i messaggi di errori venissero salvati e che lo script continuasse ad andare avanti con i pc successivi
Inserisco il codice finora scritto:
codice:
Dim OggFile, Output, Input
Dim ArgObj, LogFile, LstFile
Dim objNetwork
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Set ArgObj = WScript.arguments
LstFile = ArgObj(0)
LogFile = Split(LstFile,".")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objNetwork = CreateObject("WScript.Network")
Set Output = fso.OpenTextFile(LogFile(0)+"_Log.txt", ForAppending, True)
'Controllo se il file di Input con la Lista esiste
If fso.FileExists(LstFile) Then
Set Input = fso.OpenTextFile(LstFile, ForReading, True)
'Eseguo un ciclo per ogni riga del file di Input
Do Until Input.AtEndOfStream
ArrayLine = Input.ReadLine
strLine = Split(ArrayLine, ";")
'Check
If Ping(strLine(0)) Then
Output.WriteLine("--------------------------")
Output.WriteLine(strLine(0))
Output.WriteLine("Ping status: OK")
strLocalDrive = "K:"
strRemoteShare = "\\"+strLine(0)+strLine(1)
' Mount remote Drive into the local Drive
objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, False, "utente", "password"
Output.WriteLine("Mount: OK")
'Rename original file from Original.exe to Original_OLD.exe
fso.MoveFile strLocalDrive+"\Original.exe", strLocalDrive+"\Original_OLD.exe"
Output.WriteLine("Move: OK")
'Copy new exec file into network drive
fso.CopyFile "New.exe", strLocalDrive+"\Original.exe"
Output.WriteLine("Copy: OK")
'Unmount network drive
objNetwork.RemoveNetworkDrive strLocalDrive, True
Output.WriteLine("UnMount: OK")
Output.WriteLine()
Else
Output.WriteLine("--------------------------")
Output.WriteLine(strLine(0))
Output.WriteLine("Ping status: NOT OK")
Output.WriteLine()
End If
Loop
Input.Close
Else
msgbox("Il file " + LstFile + " non esiste")
End If
Set ArgObj = Nothing
Output.close
Function Ping(strComputer)
Dim wmiQuery, objWMIService, objPing, objStatus
wmiQuery = "Select * From Win32_PingStatus Where Address = '" & strComputer & "'"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objPing = objWMIService.ExecQuery(wmiQuery)
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
Ping = False 'Computer non raggiungibile
Else
Ping = True 'Computer raggiungibile
End If
Next
End Function
Grazie