WMI удаленный запуск скрипта для копирования файлов в сеть
От: -lexa- Россия  
Дата: 07.06.05 13:53
Оценка:
Есть N машин в сети. Необходимо чтобы пользователь, находясь на одной из машин в сети производил запуск скрипта.
Задача скрипта — перекинуть с каждой из N машин некую папку, предварительно ее заархивировав.

Сделал следующее.
1) Написал VBS скрипт, удаленно запускающий другой скрипт на каждой из N машин.
2) Написал скрипт создающий архив и копирующий из локальной папки на текущем компьютере в сетевую.
3) Запустил скрипт 2 с помощью скрипта 1 на каждой из N машин.

Результат — файлы в сетевую папку скопировались только с локальной машины(той на которой запущен скрипт 1).
С удаленных машин файлы не скопировались.

Скрипт 1 отрабатывает на скриптах, которые копируют архив в локальную для каждой из N машин папку, например c:\tempfolder
Скрипт 1 не отрабатывает если попирование происходит на сетевой диск <сетевой диск>:\tempfolder
Диск замаплен на каждой из N машин для пользователя, который в момент запуска залогинен в систему и для пользоветеля, который удаленно запускает скрипт.

скрипт 2) работает на каждой из N машин если запускать его локально.
Если запускать скрипт 2 по сети, файлы не копируются тк не находится сетевой диск.

Пробовал перед копированием из скрипта создавать удаленно сетевой диск. Тоже не получилось "Не достаточно прав"


Вот код, удаленно запускающий скрипт на N машинах.

Мож что подскажете?

StrExeName = "cscript WriteTime.vbs"
strCurrentDir = "C:\Temp"



Set StdOut = WScript.StdOut

On Error Resume Next
For Each strComputer In arrComputers

      Set objWMIService = GetObject("winmgmts:" & _
          "{impersonationLevel=Impersonate}!\\" _
               & strComputer & "\root\cimv2")
      If Err.Number Then
         StdOut.WriteLine "ERROR:   " & strComputer & _
               " [WMI connection failed]"
         Err.Clear
      Else
        Set objProcess = objWMIService.Get("WIN32_Process")
        Set objProcessStartup = objWMIService.Get("Win32_ProcessStartup")
        objProcessStartup.PriorityClass = 128
        objProcessStartup.ShowWindow = 1     
        
        Set objMethod = objProcess.Methods_("Create")
        Set objInParameters = objMethod.inParameters.SpawnInstance_()
        objInParameters.CommandLine = strExeName & strArgs
        objInParameters.CurrentDirectory = strCurrentDir
        Set objInParameters.ProcessStartupInformation = objProcessStartup

        Set objOutParameters = objProcess.ExecMethod_("Create", objInParameters)

        WScript.Echo "Method returned result = " & objOutParameters.returnValue
        If objOutParameters.returnValue = 0 Then
          WScript.Echo "Id of new process is " & objOutParameters.ProcessID
        Else
          WScript.Echo "failed"
        End If             
      End If
Next
-А где же товарищи Кошки?
-Они не приехали....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.