1

Тема: VBS: WSHController.CreateScript отказывается работать

Вот такой незымысловатый код:

Set oCtrl = WScript.CreateObject("WSHController")
Set oScript = oCtrl.CreateScript("C:\share\link.vbs","bte-dc-01")

Дает вот такой злобный отлуп:

C:\TEMP>ver

Microsoft Windows [Version 6.1.7601]

C:\TEMP>cscript test2.vbs
Сервер сценариев Windows (Microsoft R) версия 5.8
c Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.

C:\TEMP\test2.vbs(2, 1) Ошибка выполнения Microsoft VBScript: Невозможно создание объекта контейнером ActiveX

C:\TEMP>

Оно как-то лечится? Или может быть есть какие-то другие способы запустить команду на удаленном компьютере? Собственно все эти извращения вызваны там, что я пытаюсь обойтись без psexec.exe, который требует указывать login/password в явном виде...

Спасибо

2

Re: VBS: WSHController.CreateScript отказывается работать

Какая ОС у Вас и какая на «bte-dc-01»?

который требует указывать login/password в явном виде...

Вообще-то не требует.

3

Re: VBS: WSHController.CreateScript отказывается работать

alexii пишет:

Какая ОС у Вас и какая на «bte-dc-01»?

у меня - win 7 на удаленной машине win server 8 R2

Вообще-то не требует.

Usage: psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]
...
     -u         Specifies optional user name for login to remote
                computer.
     -p         Specifies optional password for user name. If you omit this
                you will be prompted to enter a hidden password.

4

Re: VBS: WSHController.CreateScript отказывается работать

inock, квадратные скобки означают необязательность аргумента. Если Вы не указываете имя/пароль — вход на удалённую машину осуществляется от имени и с полномочиями текущего пользователя.

5

Re: VBS: WSHController.CreateScript отказывается работать

Для начала выполните на удалённой машине:

wscript.exe -regserver
reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings" /v "Remote" /t REG_DWORD /d 1

и попробуйте снова.

6

Re: VBS: WSHController.CreateScript отказывается работать

alexii пишет:

Для начала выполните на удалённой машине:

вот эту страничку я еще с утра прочитал и в реестр изменения внес... И после этого уже и пробовал, разумеется... Только вот в dcomcnfg не нашел WSHRemote... Может не там искал?

C:\share>type whost.cmd
regedit /s \\igor\share\whost.reg
wscript.exe -regserver

C:\share>type whost.reg
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings]
"Remote"="1"
"IgnoreUserSettings"="1"

C:\share>

7

Re: VBS: WSHController.CreateScript отказывается работать

По настройке DCOM смотрите здесь: ITband.ru » 7 способов выполнить команду на удалённом компьютере в разделе «WSH Remote Scripting»:

В системах Windows XP с пакетом обновлений 2 и выше, необходимо изменить параметры безопасности DCOM. Это можно сделать с помощью групповой политики. В узле Computer Configuration \ Windows Settings \ Security Settings \ Local Policies \ Security Options следует установить разрешения следующим образом:

    DCOM: Machine Access Restrictions in Security Descriptor Definition Language (SDDL) syntax
    Выдать группам Anonymous Logon и Everyone разрешения Allow Local и Allow Remote Access

    DCOM: Machine Launch Restrictions in Security Descriptor Definition Language (SDDL) syntax
    Выдать группе Administrators разрешения Allow Local Launch, Allow Remote Launch, Allow Local Activation, Allow Remote Activation
    Группе Everyone – Allow Local Launch, Allow Local Activation

(ну и прочие способы, помимо «WSH Remote Scripting» можете поглядеть для разнообразия).

8 (изменено: Евген, 2012-06-20 14:52:14)

Re: VBS: WSHController.CreateScript отказывается работать

Я для настроек компа на удалённый запуск скриптов выполняю на нём вот такой скрипт...

Set WshShell=WScript.CreateObject ("WScript.Shell")
WshShell.Run "wscript -regserver",1,1
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings\Remote",1,"REG_DWORD"
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings\Enabled",1,"REG_SZ"
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings\IgnoreUserSettings",1,"REG_SZ"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\AutoShareServer",1,"REG_DWORD"
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\AutoShareWks",1,"REG_DWORD"

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Select * from Win32_Service where Name = 'SharedAccess'")
For Each objService in colServiceList
    errReturnCode = objService.StopService   
    errReturnCode = objService.ChangeStartMode("Disabled")   
Next

А на своём ещё ручками DCOM настраиваю...

Времени не хватает... :-(

9

Re: VBS: WSHController.CreateScript отказывается работать

Сначала было Windows API, и был DLL Hell...
Не ломайте себе голову с "этими вашими" DCOM, COM, OLE, ActiveX(на удаленной машине)
Берите любой известный Вам язык программирования где имеется возможность поднимать сокет,
учите программу получать из сокета имя скрипта и наделяете ее функционалом его запуска, единожды распространяете на машины по средствам того-же $install... и забыли как страшный сон.
Я как-то слепил такую штуку (с блекджеком и шлюхами)  на AutoIt.
В то время как мой упертый коллега, уже шестой час подряд побеждал "Сервер RPC недоступен",
а потом до самой своей капитуляции ковырял учебник по WMI - и таки выстрелил себе в ногу спустя сутки.

Ничто не помогает писать код больше чем Stevie Ray Vaughan And Double Trouble в наушниках.

10

Re: VBS: WSHController.CreateScript отказывается работать

RUVATA, а мы и не ломаем. У нас всё работает.