Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Удалённое выполнение сценариев

Ответить
Настройки темы
Удалённое выполнение сценариев

Новый участник


Сообщения: 25
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: Antichrist
Дата: 12-10-2006
Есть домен под 2003 ,все клиенты XP ,есть необходимость удалённо запускать wsh сценарии в любой момент времени и желательно с правами администратора ,для примера такой сценарий :
Код: Выделить весь код
Set objSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject _ 
    ("LDAP://" & objSysInfo.ComputerName)
Set CurrentUser = GetObject("LDAP://" & objSysInfo.UserName)
objComputer.Put "Description" , CurrentUser.DisplayName
objComputer.SetInfo
Пишет в описании компа в AD имя пользователя ,но сам сценарий не важен ,их очень много для различных целей.
Запуск из логон скрипта неподходит, вопервых потому как запускается только в момент самого логона ,во вторых с правами пользователя ,запуск по шедулеру тоже ,неудобно...
pcexec тоже не то ,процессы удалённо и так запускать умею через WMI ,не то.

Нашол такой код в репозитории микрософта используется так Script_name remote_comp

Код: Выделить весь код
On Error Resume Next

If Wscript.Arguments.Count = 0 Then
    Wscript.Echo "You must enter the computer name when starting this script."
    Wscript.Quit
End If

strComputer = Wscript.Arguments.Item(0)

Set objShell = CreateObject("WScript.Shell")
strCommand = "%comspec% /c ping -n 3 -w 1000 " & strComputer & ""
Set objExecObject = objShell.Exec(strCommand)

Do While Not objExecObject.StdOut.AtEndOfStream
    strText = objExecObject.StdOut.ReadAll()
    If Instr(strText, "Reply") > 0 Then

        ' =====================================================================
        ' Insert your code here
        ' =====================================================================

        Set objComputer = GetObject("WinNT://" & strComputer & "")
        objComputer.Filter = Array("User")
        For Each objUser in objComputer
            Wscript.Echo objUser.Name
        Next

        ' =====================================================================
        ' End
        ' =====================================================================

    Else
        Wscript.Echo strComputer & " could not be reached."
    End If
Loop
всё бы ничего ,только выполняется он всё равно на моей локальной машине ,даже ярлычок сценарием создать удалённо не получается ,после отработки сценария оказывается на моей локальной машине

Вопрос как осущевствить запуск сценария на удалённой машине с правами администратора ?

Отправлено: 04:18, 06-10-2006

 

Пользователь


Сообщения: 82
Благодарности: 1

Профиль | Отправить PM | Цитировать


Приведенный скрипт делает следующее:

получает имя компьютера как аргумент командной строки;
пытается его пингануть 3 раза;
если в выводе программы ping (STDOUT) находит строку Reply, то получает список пользователей этого компьютера и выводит их на экран(вот тут пес знает, что именно вернет Array("User"), надо тестить)

Т.е. на удаленной машине он и не должен выполняться.

Чтобы выполнить скрипт на удаленной машине с правами локального администратора, необходимо добавить этот скрипт в автозагрузку (конфигурация компьютера)
Чтобы выполнить скрипт на удаленной машине с правами пользователя, необходимо добавить этот скрипт в логон-скрипты (конфигурация пользователя)
Если необходимо выполнять скрипт в процессе работы, можно покопаться в сторону RPC, мне в руки как-то попадалась утилита, позволяющая выполнить команду/запустить программу на удаленной машине.

Только зачем это нужно? если выполнить приведенный аффтором сценарий

Set objSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject _
("LDAP://" & objSysInfo.ComputerName)
Set CurrentUser = GetObject("LDAP://" & objSysInfo.UserName)
objComputer.Put "Description" , CurrentUser.DisplayName
objComputer.SetInfo

с правами администратора, то в Description передастся имя администратора, а не пользователя, который под ним залогинен.

Отправлено: 12:15, 11-10-2006 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 25
Благодарности: 2

Профиль | Отправить PM | Цитировать


По поводу последнего скрипта уже и так понятно ,он впринципе работать не будет от пользователя ,на него я уже зибил.
Через RPC не полуится ,через него насколько я понял только процессы можно запускать
таким вот образом
Код: Выделить весь код
Const SW_NORMAL = 1
strComputer = "administrator"
strCommand = "c:\test.vbs" 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

' Configure the Notepad process to show a window
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_NORMAL

' Create Notepad process
Set objProcess = objWMIService.Get("Win32_Process")
intReturn = objProcess.Create _
    (strCommand, Null, objConfig, intProcessID)
If intReturn <> 0 Then
    Wscript.Echo "Process could not be created." & _
        vbNewLine & "Command line: " & strCommand & _
        vbNewLine & "Return value: " & intReturn
Else
    Wscript.Echo "Process created." & _
        vbNewLine & "Command line: " & strCommand & _
        vbNewLine & "Process ID: " & intProcessID
End If
Работает отлично ,но ограничение есть в том что пользовательне может взаимодействовать с процессом ,можно конечно попробовать wscript с араметром запускать ,но это не совсем то.
Поидее вот таким скриптом можно запустить любой сценарий на удалённой машине в процессе работы
Код: Выделить весь код
strRemoteComputer = "target_comp"
strWorkerScript = "mount.vbs"
Set objWshController = WScript.CreateObject("WshController")
Set objRemoteScript = _
objWshController.CreateScript(strWorkerScript, strRemoteComputer)
objRemoteScript.Execute

Do While Not objRemoteScript.Status = 2
 Wscript.Sleep(100)
 Wscript.Echo "Remote script not yet complete."
Loop
Запускаю на target_comp скрипт mount.vbs в котором содержится просто
Код: Выделить весь код
Set WshNetwork = CreateObject("WScript.Network")
'Монтируем Обмен на серваке как диск Y:
WshNetwork.MapNetworkDrive "x:", "\\server\install"
в итоге диск монтируется не на тот комп а на мою машину ,я этого понять не могу ,почему ?
Я прекрасно понимаю что такое можно сделать и через автозагрузку и через логон скрипт ,но задача в том чтобы запустить скрипт именно когда мне того захочется в любой момент работы.

Последний раз редактировалось Antichrist, 12-10-2006 в 06:15.


Отправлено: 03:56, 12-10-2006 | #3


(*.*)


Сообщения: 36565
Благодарности: 6697

Профиль | Сайт | Отправить PM | Цитировать


А почему не пользуемся тегом code?


Перенесено обратно в NT. Все-таки вопрос связан с администрированием клиентов, а это тема NT-форума, несмотря на тип клиентской ОС.

-------
Канал Windows 11, etc | Чат @winsiders


Последний раз редактировалось Vadikan, 12-10-2006 в 09:05.


Отправлено: 06:01, 12-10-2006 | #4


Новый участник


Сообщения: 25
Благодарности: 2

Профиль | Отправить PM | Цитировать


сорри ,запамятовал исправлюсь ,почему перенесли тоже не в курсе ,думаю это как раз админам нужно ,а большинство обитает в 2k3

Отправлено: 06:06, 12-10-2006 | #5



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Удалённое выполнение сценариев

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Сервер сценариев в Windows Kirill576 Microsoft Windows 2000/XP 5 09-08-2011 16:20
Удалённое регулирование громкости sPave Microsoft Windows 2000/XP 0 10-08-2006 18:04
[решено] Выполнение сценариев перед shutdown & restart korvin13 Microsoft Windows 2000/XP 2 08-03-2006 17:04
Отладчик сценариев Helter Skelter Хочу все знать 1 26-04-2004 00:45




 
Переход