Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Не запускаются vbs-сценарии с расшаренного каталога (http://forum.oszone.net/showthread.php?t=116079)

ntvp 03-09-2008 09:32 889859

Не запускаются vbs-сценарии с расшаренного каталога
 
На рабочих станциях класса (Windows XP SP2) при запуске компьютера происходит
автоматический вход в систему с учетной записью student (одна учетная запись на всех).

При входе запускается vbs-сценарий, прописанный в локальной политике,
который в свою очередь запускает сценарий, расположенный на сервере (Windows Server 2003)
в общей папке, следующим образом:

========================================================

Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
Call Shell.Run("cscript.exe \\server\share\scripts.vbs")

========================================================

Проблема в том, что этот сценарий иногда не запускается,
причем иногда на одних компьютерах, иногда на других и никакой
системности в происходящем не наблюдается.

С целью разобраться, что происходит изменил сценарий script.vbs следующим образом:

========================================================

Dim Network
Dim FSO
Dim FName
Dim F

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Network = WScript.CreateObject("WScript.Network")

FName = "\\server\temp\" & UCase(Network.ComputerName) & ".log"
Set F = FSO.CreateTextFile(FName, True)
Call F.WriteLine("Script '" & WScript.ScriptName & "' was running at " & Now)
Call F.Close

========================================================

Т.е., если сценарий отработал, то на сервере в общей папаке temp создается файл,
имя которого содержит имя компьютера, на котором был запущен сценарий.

Так вот, после перезагрузки 12 компьютеров класса, в папаке temp на сервере
появляется обычно 3 - 4 лог-файла, причем каждый раз разные.

Вот такая вот проблема.

Может кто сталкивался с чем-то подобным или знает как более детально
отследить процесс загрузки, чтобы понять что мешает нормальному
исполнению сценариев на всех рабочих станциях.

amel27 03-09-2008 09:46 889869

- в какой конкретно политике прописан скрипт?
- стартовый скрипт хранится локально? если да, то проверьте сначала работу самой политики (лог на локальный диск)
- если политика отрабатывает и стартовый скрипт запускается всегда, отлаживайте скрипт в интерактивном режиме под учеткой что и в политике

ntvp 03-09-2008 10:55 889920

Стартовый сценарий прописан в локальной политике.
Однозначно он запускается, т.к. после вызова сценария с сервера
выполняются еще действия и они наблюдаемы.

Отслеживать интерактивно... тут такая проблема:
при запуске _вручную_ стартового сценария, вызов сценария с сервера выполняется всегда,
а вот при автоматическом запуске - нет.

Добавлю еще информации:

В стартовом сценарии на самом деле имеются два вызова двух различных сценариев с сервера.
Вызов первого сценария осуществляется, как я уже написал, с указанием пути в формате UNC, т.е.
\\server\share\script.vbs

Затем идут команды подключения сетевого диска S:.

Затем происходит запуск второго сценария с указанием пути в стандартном формате S:\folder\script2.vbs

С целью отладки сделал тексты обоих сценариев одинаковыми,
т.е. script.vbs и script2.vbs содержат следующее:

========================================================

Dim Network
Dim FSO
Dim FName
Dim F

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Network = WScript.CreateObject("WScript.Network")

FName = "\\server\temp\" & UCase(Network.ComputerName) & ".log"
Set F = FSO.CreateTextFile(FName, True)
Call F.WriteLine("Script '" & WScript.ScriptName & "' was running at " & Now)
Call F.Close

========================================================

Так вот, по тому, что создается в папке temp можно сделать вывод, что
script2.vbs исполняется всегда, а script.vbs иногда и каждый раз на произвольных машинах.

Складывается впечатление, что сервер сценариев cscript.exe в первом случае просто
не успевает дождаться ответа от сервера, чтобы загрузить текст программы и завершает свою работу.

amel27 03-09-2008 11:29 889948

попробуйте запускать главный скрипт с ожиданием завершения внешних вызовов:
Код:

Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
Call Shell.Run("cscript.exe \\server\share\scripts.vbs",1,true)

FYI: Run Method (Windows Script Host)

ntvp 04-09-2008 13:35 890785

Ожидание завершения работы сценария не дало положительных результатов.
Зато все заработало после установки пятисекундной задержки:

Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
WScript.Sleep(5000)
Call Shell.Run("cscript.exe \\server\share\scripts.vbs")

Все равно вопрос остался: что же мешает нормальной работе сценария?


Время: 08:32.

Время: 08:32.
© OSzone.net 2001-