|
Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Удалённое выполнение сценариев |
|
Удалённое выполнение сценариев
|
Новый участник Сообщения: 25 |
Есть домен под 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 Запуск из логон скрипта неподходит, вопервых потому как запускается только в момент самого логона ,во вторых с правами пользователя ,запуск по шедулеру тоже ,неудобно... 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
|
Профиль | Отправить 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
|
Профиль | Отправить 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 Поидее вот таким скриптом можно запустить любой сценарий на удалённой машине в процессе работы 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 Set WshNetwork = CreateObject("WScript.Network") 'Монтируем Обмен на серваке как диск Y: WshNetwork.MapNetworkDrive "x:", "\\server\install" Я прекрасно понимаю что такое можно сделать и через автозагрузку и через логон скрипт ,но задача в том чтобы запустить скрипт именно когда мне того захочется в любой момент работы. |
Последний раз редактировалось Antichrist, 12-10-2006 в 06:15. Отправлено: 03:56, 12-10-2006 | #3 |
(*.*) Сообщения: 36565
|
Профиль | Сайт | Отправить PM | Цитировать А почему не пользуемся тегом code?
Перенесено обратно в NT. Все-таки вопрос связан с администрированием клиентов, а это тема NT-форума, несмотря на тип клиентской ОС. |
------- Последний раз редактировалось Vadikan, 12-10-2006 в 09:05. Отправлено: 06:01, 12-10-2006 | #4 |
Новый участник Сообщения: 25
|
Профиль | Отправить PM | Цитировать сорри ,запамятовал исправлюсь ,почему перенесли тоже не в курсе ,думаю это как раз админам нужно ,а большинство обитает в 2k3
|
|
Отправлено: 06:06, 12-10-2006 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка - Сервер сценариев в 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 |
|