godvin
Для одной машины и папки выглядеть это будет примерно так:
OPath = "C:\Reserve" ' папка на своей машине
IPath = "D:\Monitor" ' расшаренная папка
Comp = "Ivanov" ' имя компьютера расшаренной папки
Set FSO = CreateObject("Scripting.FileSystemObject")
IPath = """" & Replace(IPath, "\", "\\\\") & """"
OPath = FSO.BuildPath(OPath, "\")
Set colEvents = GetObject("winmgmts:" &_
"{impersonationLevel=impersonate}!\\" &_
Comp & "\root\cimv2").ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE " &_
"Targetinstance ISA 'CIM_DirectoryContainsFile' and " &_
"TargetInstance.GroupComponent= " &_
"'Win32_Directory.Name=" & IPath & "'")
Do
File = Replace(Split(colEvents.NextEvent._
TargetInstance.PartComponent, "=")(1), "\\", "\")
File = Mid(File, 2, Len(File) - 1)
If Not FSO.FileExists(OPath & File) Then FSO.CopyFile File, OPath
Loop
Для нескольких я бы, наверно, сделал коллекции (имена машин, пути) для перебора.
Если все подряд, то что-то в таком ракурсе:
Set WshNetwork = CreateObject("WScript.Network")
Set NameSpace = GetObject("WinNT://" & WshNetwork.UserDomain)
NameSpace.Filter = Array("computer")
For Each Comp In NameSpace
If Comp <> WshNetwork.ComputerName Then
' делаем дела с каждым компьютером
End If
Next
Можно ещё по шарам пробежаться, посмотреть:
For each Share in GetObject("winmgmts:{impersonationLevel=" &_
"impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_Share")
MsgBox Share.Path
Next
Тестить было негде, т.ч. не обессудьте'с.