Войти

Показать полную графическую версию : [решено] Удаленный запуск скриптов через WMI... загр.в процессы но ни чего не делает.


RUVATA
13-10-2010, 15:13
Всем доброго времени суток...
Осваиваю WMI... в конкретном случае пытаюсь использовать Win32_Process.Create для запуска скрипта на удаленном компъютере, подкинув его в адм.шару (ADMIN$ "C:\WINDOWS\")
Я "Администратор" на КД, юзверь сидит под учеткой "Опытного пользователя", но с ограниченными GPO правми на "C:\"
и на некоторые парметры реестра касающиеся автозапуска и регистрации флэш

Сервер W2K3 R2 / клиент WinXP Pro (\\Zmes_01)

VBsript

Set objWMIService = GetObject ("winmgmts:\\" & "Zmes_01" & "\root\cimv2:Win32_Process")
Result = objWMIService.Create ("calc.exe", Null, Null, intProcessID)


так-же вместо calc.exe пробовал подставлять C:\WINDOWS\my.exe (реально там существующая, и реально работающая, если запускать локально на том-же компе прога, вернее скомпилированный в exe скрипт js)

В итоге на конечном компьютере вижу в процессах "calc.exe" запущенный "Администратор" но нихрена не происходит ни на сервере,
ни на конечном компьютере...
точно такая-же хрень если запускать что-либо из psexec... подцепившись с правами Администратора

В чем может быть дело? почему они запускаются но не работают?
В языке ошибки нет - это точно... проблемма в каких-то настройках системы....

cameron
13-10-2010, 16:21
В итоге на конечном компьютере вижу в процессах "calc.exe" запущенный "Администратор" но нихрена не происходит ни на сервере, »
так а что вы хотите?
приложение то запущено, от нужной учётной записи.
мельком видела вторую вашу сегодняшнюю тему - по моему очередной велосипед изобретаете.
рассказывайте что вам нужно сделать и сразу скажите, есть ли у вас хоть один хост с виста или выше.

RUVATA
13-10-2010, 17:04
вот к примеру js

var vbOKOnly = 0;
var WshShell = WScript.CreateObject("WScript.Shell");
var WshNetwork = WScript.CreateObject("WScript.Network")
var colDrives = WshNetwork.EnumNetworkDrives();
{
WshNetwork.MapNetworkDrive("J:", "\\\\Server\\DATA$", "False");
}
его задача подключить сетевой диск... J: (это так сказать для наглядности экперимента, реальный - же скрипт который мне необходимо запустить выполняет сотню операций ; обычно я его тупо запускал на конечных машинах локально, но вот решил попробовать пойти дальше запускать его автоматически и удаленно... при помощи GPO меня не устраивает т.к. можно или при входе, или при выходе... и надо его добавлять, потом убирать, а мне надо разово... взять и выполнить.)

Вот у меня скрипт под названием test.js
При помощи другово скрипта main.js я забрасываю его в адм.шару (ADMIN$) выбранных мною компьютеров сети... теперь мне его нужно там выполнить... вот для этих целей вроди бы и и спользуются
PowerShell, WHS, а так-же метод Create класса Win32_Process (WMI)... я выбрал последнее, так как мне вск это необходимо делать опять-же из скрипта...

Проблемма в том, что вот этот скрипт test.js, запущенный локально - отлично выполняет свою функцию... а вот если его запускать удаленно на той-же машине, то он появляется в процессах , но функцию свою не выполняет, и выгружается, если скомпилировать скрипт в exe, то опять-же локально все - OK, а удаленно
вернее просто висит в процессах... вот...

cameron
13-10-2010, 17:20
Проблемма в том, что вот этот скрипт test.js, запущенный локально - отлично выполняет свою функцию... а вот если его запускать удаленно на той-же машине, то он появляется в процессах , но функцию свою не выполняет, и выгружается, если скомпилировать скрипт в exe, то опять-же локально все - OK, а удаленно
вернее просто висит в процессах... вот.. »
а если запускать через cscript c:\admin\script.js?
(да, ознакомьтесь с статьёй (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/wsh_runfromcommandprompt.mspx?mfr=true)) на предмет дэбага и батча.
далее, возможно что идёт обращение к серверу с разных учёток, а множественные подключения не разрешены.
же скрипт который мне необходимо запустить выполняет сотню операций »
ну, я думаю, вы сами уже поняли ответ:
если эти "сотни" (не верю) операций это мапы дисков и тому подобная фигня - то ГПП.
при помощи GPO меня не устраивает т.к. можно или при входе, или при выходе... и надо его добавлять, потом убирать, а мне надо разово... взять и выполнить.) »
планировщик

RUVATA
13-10-2010, 18:15
планировщик »
планировщик, если ему подкидывать задания удаленно делает ровным счетом то же самое...
процесс висит - результата - 0
это мапы дисков и тому подобная фигня - то ГПП. »
ГПП - ? GPMC
по больше части - да, в основном это файловые операции ;
он мапит диски, принтера, есть и специфическое оборудование, подкидывает дополнения к Mozilla TB и FF, проверяет и редактирует ini-шки некоторых программ написанных на FireBird, настраивает BDE, создает и шарит необходимые каталоги, подкидывает еще несколько батников и скриптов создает для них задачи (необходимо для архивирования и документооборота), определяет пользователя - подкидывает ему его настройки браузера, рабочего стола, ищет ненужные шары - рубит, лепит привычное сетевое окружение ... и еще кучу разных мелочей... которые долго и утомительно пришлось бы делать руками после очередной переустановки или на новой машине. (а компы у нас циркулируют постоянно туда-сюда)
Скрипт рабочий и проверенный, т.е. я сажусь за комп, захожу Админом, подтягиваю его - запускаю... и через считанные секунды - все готово!
А вот удаленно никак...
а если запускать через cscript c:\admin\script.js? »
а это можно сделать удаленно, из другого скрипта?

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

QRS
14-10-2010, 19:44
В чем может быть дело? почему они запускаются но не работают? »
var colDrives = WshNetwork.EnumNetworkDrives();
{
WshNetwork.MapNetworkDrive("J:", "\\\\Server\\DATA$", "False");
} »
Запуск через psexec не позволяет процессу в удаленной системе использовать сетевой доступ (то встречалось в мануале по sysinternals).

Как Вам уже написали Выше, GP - ответ на ваш вопрос.
ps: Powershell вам поможет только если будет стоять на всех клиентских машинах.

RUVATA
15-10-2010, 19:32
GP не дает возможности, разово, сиюминутно выполнить какой нь-ть скрипт, или прогу на удаленной машине...
или я ошибаюсь?
Вобще-то я уже нашел способ делать то что мне нужно, это действительно WMI, суть здесь (http://forum.oszone.net/thread-188163-2.html)...
Я просто сделал выводы, из соображений и инфы предоставленной amel27...
1) Клиентская и удаленная часть скрипта...
2) Скрипт надо передавать в WSH выбранной машины,
3) Создать для этих целей отдельную учетку с админтскими правами,
слепить прогу с двумя основыными функциями -
создавать объекты WScript.Shell
и экземпляры класса \root\cimv2:Win32_Process
на основе переданных ей параметров, в нашем случае полный адрес к скрипту, или проге
4)Ввести ее в автозапуск систем пользователей как службу...
5)Основным скриптом передавать удаленный на машину нашей службе адрес и тип (скрипт/программа).

Получаем реал-тайм выполнение скрипта/программы на удаленных машинах, при этом результаты его работы не застревают в выделенной сессии, как например через PsExec, или через Win32_Process.Create удаленно, а явно наблюдаются юзверем, как буд-то все это делается локально в рамках его рабочей сессии т.е.ты можешь ему прям во время его работы диск смапить :)
а через RMI... Java-вой можно вообще творить че хочешь... JVM не волнуют предпочтения Windows на счет удаленного запуска процессов с графическим интерфейсом.

Причем для всего этого добра можно слепить себе простенький интерфейс, чем я в общем-то и занялся... есть еще несколько тонкостей, но они больше неудобства чем проблемы...


но все равно интересно...

cameron
15-10-2010, 21:41
GP не дает возможности, разово, сиюминутно выполнить какой нь-ть скрипт, или прогу на удаленной машине...
или я ошибаюсь? »
сиюминутно - нет.
а через 30 минут (ЕМНИП это интервал обновления ГП) - да. а можно ГП + гпапдейт /форсе.

вы изобретатель велосипедов, вам нужно либо учиться делать правильно, либо идти в другую сферу. я боюсь предстваить, ЧТО получит человек после вас.

RUVATA
17-10-2010, 17:04
а через 30 минут (ЕМНИП это интервал обновления ГП) - да. а можно ГП + гпапдейт /форсе. »
скрипт назначается, или на вход или на выход, а у меня например часть машин, на неделе раза два от силы выключаются... а некоторые вообще не вырубаются, и по специфике нельзя - АСКУЭ.
как тогда быть с GP ?

cameron
17-10-2010, 19:12
скрипт назначается, или на вход или на выход »
какой скрипт то господи?..
GPP в фоне отрабатывают.

RUVATA
17-10-2010, 20:16
cameron, спасибо...
GPP (http://www.techdays.ru/videos/1066.html)
я и не знал, о подобном расширении, это именно то, что нужно...
еще раз спасибо.
Вы были правы, еще в начале темы, я действительно "изобретал велосипед"...
хотя готовое решение было "под носом" + решает еще ряд попутных проблем,
но ограничения и неудобства все таки есть:
для работы с этим расширением, нужна w7 / Vista или w2k8... а у меня только одна 7-ка, и проблематично будет с нее юзверя снять...
____________________________________________
Но ради этого думаю стоит :)




© OSzone.net 2001-2012