1

Тема: VBScript: почему не работают скрипты WMI?

Народные советы. Если не удаётся подключиться по WMI к удалённому компьютеру или какие-то WMI-скрипты неправильно работают:

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

На удалённых компьютерах с операционной системой Windows NT, Windows 95 или Windows 98 необходимо специально устанавливать WMI.

Как правило, желательно иметь права администратора на том удаленном компьютере, к которому осуществляется подключение с помощью WMI.

По умолчанию любой не принадлежащий домену компьютер с Windows XP разрешает всем сетевым пользователям работать только под учетной записью Гость. В гостевой модели при любых попытках войти в систему локального компьютера через сеть применяется только гостевая учетная запись. В классической модели пользователи при доступе через сеть входят в систему под своими учетными записями. Модель безопасности можно изменить. Установка параметра Forceguest ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa в 0 приводит к отключению гостевой модели (1 - включено). При отключенной гостевой модели у папок и файлов в свойствах появляется вкладка Безопасность.

У подключающегося пользователя должны быть права на чтение и исполнение к папке WINDOWS/system32 (там лежат файлы, используемые WMI).

Запустите WMI Control (C:\WINDOWS\system32\wmimgmt.msc) и попробуйте подключиться к другому компьютеру интерактивно. Запустите ту же оснастку на том компьютере, куда не удаётся подключиться, проверьте права (кнопка "Безопасность" на одноимённой вкладке, в свойствах).

Если вы используете метод Create() класса Win32_Process для запуска процессов, используйте локальные (не UNC) пути к файлам. Подробнее - в статье Рецепты WMI: управление процессами.

Проверьте, запущена ли служба "Запуск серверных процессов DCOM" (DcomLaunch).

Запустите mmc.exe, подключите оснастку "Службы компонентов". В дереве найдите нужный компьютер. В свойствах компьютера на вкладке "Безопасность COM" проверьте все права (четыре кнопки).

Проверьте, запущена ли служба "Background Intelligent Transfer Service".

Проверьте, запущена ли служба "Удаленный реестр (RemoteRegisry)".

Проверьте, запущены ли службы "Инструментарий управления Windows" (winmgmt), Расширения драйверов WMI (Windows Management Instrumentation).

Проверьте настройки брандмауэра (firewall) в соответствии с документацией на него (если это не встроенный брандмауэр).

При использовании пустых паролей могут возникнуть проблемы с подключением, если на удалённом компьютере в локальных политиках безопасности включен параметр "Учётные записи: ограничить использование пустых паролей для консольного ввода" (включено по умолчанию в Windows XP SP2). Откажитесь от пустых паролей, либо отключите это ограничение. Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом: Панель управления\Администрирование\Локальная политика безопасности\Параметры безопасности\Локальные политики\Параметры безопасности\Учётные записи: ограничить использование пустых паролей для консольного ввода -> Отключить.

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

2

Re: VBScript: почему не работают скрипты WMI?

Статья с сайта Майкрософт по этой теме (англ.): WMI Isn’t Working!.

В статье, помимо прочего, есть ссылка на скачивание специального проверочного vbs-скрипта WMI Diagnosis Utility, который выдаёт подробнейший лог обо всех существующих возможных проблемах: Download details: The WMI Diagnosis Utility -- Version 2.0.

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

3

Re: VBScript: почему не работают скрипты WMI?

Источник - http://www.lanstate.com/rus/network-sof … /wmi.shtml.

Существуют ограничения при работе с WMI для разных операционных систем:
- Нельзя получить информацию с компьютера под управлением Windows XP Home Edition.
- На компьютерах под управлением Windows 2000 должен быть установлен Service Pack 2 для получения информации с Windows XP или более поздних операционных систем.
- Компьютеры под управлением Windows NT не могут получить информацию с компьютеров под управлением операционных систем более поздних, чем Windows 2000, таких, как Windows XP или Windows Server 2003.
- Получение информации с компьютеров под управлением Windows Server 2003 из-под ОС Windows 98 и Windows 95 не поддерживается.

Настройка и запуск WMI под управлением Windows 95, Windows 98, Windows Me: служба WMI должна быть помещена в автозапуск, а также должно быть разрешено соединение по DCOM.
1) В разделе реестра HKLM\SOFTWARE\MICROSOFT\OLE установите значение EnableDCOM в "Y", а также EnableRemoteConnect в "Y". Значение EnableRemoteConnect по умолчанию "N".
2) В разделе реестра HKLM\SOFTWARE\Microsoft\wbem\cimom установите значение AutostartWin9X в "2". Установите значение EnableAnonConnections в "1".
3) Добавьте файл Winmgmt.exe в автозагрузку. Файл находится в каталоге \Windows\WBEM.

Разрешение удаленного администрирования.
1) Выберите в меню "Пуск" пункт "Выполнить", введите команду "gpedit.msc" и нажмите кнопку "OК".
2) Последовательно разверните узлы "Корень консоли", "Конфигурация компьютера", "Административные шаблоны", "Сеть", "Сетевые подключения", "Брандмауэр Windows" и "Профиль домена".
3) Правой кнопкой мыши щелкните элемент "Брандмауэр Windows: Разрешать исключения для удаленного управления" и выберите пункт "Свойства".
4) Выберите вариант "Включен" и нажмите кнопку "ОК".

Разрешение на удаленный запуск DCOM.
1) Выберите в меню "Пуск" пункт "Выполнить", введите команду "DCOMCNFG" и нажмите кнопку "OК".
2) В диалоговом окне "Службы компонентов" последовательно разверните узлы "Службы компонентов", "Компьютеры" и "Мой компьютер".
3) На панели инструментов нажмите кнопку "Настройка моего компьютера". Появится диалоговое окно "Мой компьютер".
4) В диалоговом окне "Мой компьютер" перейдите на вкладку "Безопасность СОМ".
5) В разделе "Разрешения на запуск и активацию" нажмите кнопку "Изменить ограничения".
6) Если требуемое имя пользователя или группы отсутствует в списке "Группы или пользователи", в диалоговом окне "Разрешение на запуск" выполните следующие действия:
a. В диалоговом окне "Разрешение на запуск" нажмите кнопку "Добавить".
b. В диалоговом окне "Выбор: Пользователи, Компьютеры или Группы" добавьте нужное имя пользователя или группы в поле "Введите имена выбираемых объектов" и нажмите кнопку "OК".
7) В диалоговом окне "Разрешение на запуск" выделите в списке "Группы или пользователи" пользователя или группу. В списке "Разрешения для пользователя" установите в столбце "Разрешить" флажок у записи "Удаленный запуск" и нажмите кнопку "OК".

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

4

Re: VBScript: почему не работают скрипты WMI?

Открытие порта DCOM.
Перед тем, как открывать порты в брандмауэре Windows, убедитесь, что в групповой политике включен параметр "Брандмауэр Windows": "Разрешать локальные исключения для портов". Для этого выполните следующие действия:
1) Выберите в меню "Пуск" пункт "Выполнить", введите команду "gpedit.msc" и нажмите кнопку OК.
2) Последовательно разверните узлы "Корень консоли", "Конфигурация компьютера", "Административные шаблоны", "Сеть", "Сетевые подключения", "Брандмауэр Windows" и "Профиль домена".
3) Правой кнопкой мыши щелкните элемент "Брандмауэр Windows: Разрешать локальные исключения для портов" и выберите пункт "Свойства".
4) Выберите вариант "Включен" и нажмите кнопку "ОК".
Настроить исключения для портов можно с помощью параметра "Брандмауэр Windows: Задать исключения портов".

Модели DCOM сопоставлен TCP-порт 135.
Открыть порт можно, выполнив из командной строки следующую команду:

netsh firewall add portopening TCP 135 DCOM_TCP135

Другой способ:
1) Нажмите кнопку "Пуск" и выберите пункт "Панель управления."
2) Дважды щелкните значок "Брандмауэр Windows" и откройте вкладку "Исключения".
3) Нажмите кнопку "Добавить порт".
4) В поле "Имя" введите "DCOM_TCP135", а в поле "Номер порта" введите "135".
5) Выберите вариант "порт ТСР" и нажмите кнопку ОК.
6) Нажмите кнопку "ОК".

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

5

Re: VBScript: почему не работают скрипты WMI?

Возможно, придется добавить приложения в список исключений брандмауэра Windows.
Перед добавлением программ в список исключений брандмауэра Windows убедитесь, что в групповой политике включен параметр "Брандмауэр Windows: Разрешать локальные исключения для программ".
1) Выберите в меню "Пуск" пункт "Выполнить", введите команду "gpedit.msc" и нажмите кнопку OК.
2) Последовательно разверните узлы "Корень консоли", "Конфигурация компьютера", "Административные шаблоны", "Сеть", "Сетевые подключения", "Брандмауэр Windows", и "Профиль домена".
3) Правой кнопкой мыши щелкните элемент "Брандмауэр Windows: Разрешать локальные исключения для программ" и выберите пункт "Свойства".
4) Выберите вариант "Включен" и нажмите кнопку ОК.
Настроить исключения для программ можно с помощью параметра "Брандмауэр Windows: Задать исключения для программ".
Брандмауэр Windows использует два списка исключений: первый определяется параметрами групповой политики, а второй - компонентом брандмауэра Windows в панели управления.

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

6

Re: VBScript: почему не работают скрипты WMI?

Статья KB: Устранение неполадок с инструментарием WMI в Windows XP с пакетом обновления 2 (SP2)

7 (изменено: Евген, 2011-04-20 14:39:04)

Re: VBScript: почему не работают скрипты WMI?

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

Всё делается от имени локального админа.
1) запускаем cmd.exe
2) толкаем команду rundll32 wbemupgd, UpgradeRepository
3) перезагружаем комп
4) запускаем cmd.exe
5) толкаем команду net stop winmgmt    (согласиться со списком всем останавливающихся зависимых служб)
6) убеждаемся что служба точно остановилась и 5 пункт выполняем повторно, иначе не даст удалить папку с кривым репозиторием
7) удаляем папки с репозиториями, как правило это C:\WINDOWS\system32\wbem\Repository
    бывают папки C:\WINDOWS\system32\wbem\Repository.0001  и т.д. и т.п.   - УДАЛЯЕМ ВСЕ !!!
8) толкаем команду net start winmgmt
9) перезагружаем комп и всё работает.

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