Datei auf mehrere PC kopieren (VB Skript) funktioniert nicht immer
Hallo zusammen. Ich habe mir ein VB Skript zusammengebastelt welches mir eine Liste von PC aus einer Textdatei ausliest und versucht eine bestimmte Datei in ein Zielverzeichnis auf jedem PC zu kopieren. Das skript läuft so weit. Allerdings kann es aus irgend einem Grund nicht auf jeden PC kopieren. Zu einigen PC kann anscheinend keine Verbindung aufgebaut werden. Manuell konnte ich die Ziel PC sowohl anpingen als auch manuell kopieren. Ich kann es mir monentan nicht so ganz erklären. Liegt es an meinem Skript?? Ich bin in der VB Programmierung nicht sehr erfahren, vielleicht kann ja mal jemand meinen Code gegenlesen.
Option Explicit
Dim fso, f, objEingabe, source, exists
Dim EingabePfad, EingabeDatei, pathToClientFile, pathToRemoteFolder, programPath, client, Zeile, Position, i
REM EingabePfad = "D:\Arbeitsbereich BitBox\BitBoxConfigFiles\"
EingabePfad = ".\"
EingabeDatei = "hosts.txt"
source = ".\config\dispatch.pac"
programPath = "c$\Program Files (x86)\sirrix AG\BitBox\dispatch.pac"
Const ForReading = 1
Const ForWriting = 2
set fso = CreateObject("Scripting.FileSystemObject")
Set objEingabe = fso.OpenTextFile(EingabePfad & EingabeDatei, ForReading)
Do Until objEingabe.AtEndOfStream
client = objEingabe.Readline
pathToClientFile = "\\"&client&"\"&programPath
pathToRemoteFolder ="\\"&client&"\c$\Program Files (x86)\sirrix AG\BitBox\"
REM msgbox pathToClientFile
exists = fso.FolderExists(pathToRemoteFolder)
REM msgbox exists
if (exists) then
fso.CopyFile source, pathToClientFile
Set f = fso.OpenTextFile(".\log\log.txt", 8, True)
f.WriteLine vbCr & "succesfully copied to " & client & i
f.Close
else
Set f = fso.OpenTextFile(".\log\failed.txt", 8, True)
f.WriteLine vbCr & client & i
f.Close
end if
Loop
Msgbox "Fertig!"
set fso = nothing
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 232275
Url: https://administrator.de/contentid/232275
Ausgedruckt am: 25.11.2024 um 22:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo chrismass,
bist du sicher das auf den entsprechenden Rechnern die Administrative Shares aktiviert sind, Wenn es ein WIN7 oder WIN8 Rechner ist, muss ja erst durch einen Registry-Eintrag (LocalAccountTokenFilterPolicy) der Zugriff aktiviert werden wenn es sich um PCs ohne Domänenmitgliedschaft handelt, oder sind die Rechner Mitglied einer Domäne (hier ist dies nicht nötig) ?
Grüße Uwe
bist du sicher das auf den entsprechenden Rechnern die Administrative Shares aktiviert sind, Wenn es ein WIN7 oder WIN8 Rechner ist, muss ja erst durch einen Registry-Eintrag (LocalAccountTokenFilterPolicy) der Zugriff aktiviert werden wenn es sich um PCs ohne Domänenmitgliedschaft handelt, oder sind die Rechner Mitglied einer Domäne (hier ist dies nicht nötig) ?
Grüße Uwe
Zitat von @chrismass:
Momentan habe ich aber eine andere Vermutung. Die PC stehen teilweise an einem entfernten Standort. Ich vermute dass die PC nicht in einer angemessenen Zeit antworten und deshalb nichts kopiert wird.
dann benutze zum kopieren Robocopy in deinem Script, mit dem kann man Timeouts und Verbindungswiederholungen bei solchen Szenarien festlegen.Momentan habe ich aber eine andere Vermutung. Die PC stehen teilweise an einem entfernten Standort. Ich vermute dass die PC nicht in einer angemessenen Zeit antworten und deshalb nichts kopiert wird.
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "robocopy ""C:\Sourcefolder"" ""\\server\targetfolder"" ""dispatch.pac"" /R:10 /W:5"
Grüße Uwe