Лучший отвечающий
Проблема с обращением к Windows Server 2008 SP2

Вопрос
-
Добрый день, уважаемые знатоки! Ситуация такая: в сети есть два сервера под управлением Windows Server Ent. 2008 SP2. Один из них 32 бита, второй 64. Есть несколько скриптов, использующих WMI. Эти скрипты замечательно отрабатываются относительно первого сервера, но на 64х-битном вылетают с ошибкой. Например, самый простой скрипт, который определяет разрядность запущенной Windows (приведён ниже) при запуске на самом 64х-сервере отрабатывает без проблем, а при запуске на удалённой машине и обращении к этому серверу вылетает с ошибкой VBscript 800A01CE.
Привожу текст скрипта:
Option Explicit 'Скрипт показывает разрядность операционной системы на удалённом компьютере. '================================================================ 'НАЧАЛО БЛОКА КОНФИГУРАЦИИ Const HKLM = &H80000002 Const HKCU = &H80000001 Const HKU = &H80000003 Const strKeyPath = "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" Const strKeyName = "PROCESSOR_ARCHITECTURE" Const TITLE = "Проверка разрядности операционной системы" 'ОКОНЧАНИЕ БЛОКА КОНФИГУРАЦИИ '================================================================ 'Инициализация. Dim strComputer, WshNetwork, objReg, objWMI, strKey Set WshNetwork = WScript.CreateObject("WScript.Network") strComputer = LCase(WshNetwork.ComputerName) strComputer = InputBox("Введите имя компьютера:", TITLE & ":", strComputer) Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 'Проверяем доступность компьютера If Unavailable(strComputer) Then MsgBox "Компьютер недоступен:" & vbCrLf & strComputer, vbExclamation, TITLE strComputer = "" End If 'Проверяем наличие установленного обновления. If Len(strComputer) > 0 Then objReg.GetStringValue HKLM, strKeyPath, strKeyName, strKey MsgBox "На компьютере " & strComputer & " установлена система версии " & strKey End If 'В случае ошибки If Len(Err.Description) > 0 Then If Not SILENT Then MsgBox strComputer & vbCrLf & "Ошибка:" & vbCrLf & Err.Description, vbExclamation, TITLE End If ' Завершение исполняемой части ' ============================ Function Unavailable(addr) 'проверить доступность компьютера в сети 'вернуть True, если адрес недоступен Dim ping, p Set objWMI = GetObject("WinMgmts:{impersonationLevel=impersonate}") Set ping = objWMI.ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address = '" & addr & "'") For Each p In ping If IsNull(p.StatusCode) Then Unavailable = True Else Unavailable = (p.StatusCode <> 0) End If Next End Function
21 июня 2011 г. 9:27
Ответы
-
Ха! Я давно подозревал, что я — шляпа, но не до такой же степени...
Во входящих подключениях были выключены пункты Инструментарий управления Windows (и DCOM, и WMI). Включил для локальной подсети, скрипт сразу заработал.
- Помечено в качестве ответа me4huk 21 июня 2011 г. 12:34
21 июня 2011 г. 12:09
Все ответы
-
Приведите полный текст сообщения об ошибке и укажите номер строки, в которой она возникает.21 июня 2011 г. 10:47
-
Строка 20
Ошибка: Компьютер удаленного сервера не существует или недоступен: 'GetObject'
Т.е. при попытке обращения к WMI удалённого сервера.
21 июня 2011 г. 10:57 -
Вероятно, блокируется подключение (например, встроенным брандмауэром).
Кстати, у вас доступность узла почему-то проверяется после попытки подключения к нему. Это же бессмысленно.
21 июня 2011 г. 11:36 -
Ну а по-простому, вам удается в той же самой конфигурации подключиться по сети к 64-битному серверу консолью Управление компьютером? Или подключиться по сети к его реестру?
21 июня 2011 г. 11:39Модератор -
Вероятно, блокируется подключение (например, встроенным брандмауэром).
Кстати, у вас доступность узла почему-то проверяется после попытки подключения к нему. Это же бессмысленно.
Да, Вы правы. Перенёс проверку, чтобы она стояла перед подключением. Правда, это не помогло. Проверка проходит без проблем, подключение выкидывает ту же ошибку.
21 июня 2011 г. 11:53 -
Консолью управления подключиться не удаётся, поскольку везде XP. С другого сервера 2008 подключаюсь, но выкидывается ошибка о том, что сервер RPC недоступен. К реестру подключение проходит без проблем.
Я думаю, что как минимум частично эти проблемы обусловлены встроенным брандмауэром. Ну, Удалённое администрирование (RPC) во входящих не разрешено на обоих серверах, я его не включал. Если я не ошибаюсь, это не должно влиять на работу WMI? Доступ к сети COM+ (входящий трафик DCOM) по 135-му порту включён.
21 июня 2011 г. 12:02 -
Ха! Я давно подозревал, что я — шляпа, но не до такой же степени...
Во входящих подключениях были выключены пункты Инструментарий управления Windows (и DCOM, и WMI). Включил для локальной подсети, скрипт сразу заработал.
- Помечено в качестве ответа me4huk 21 июня 2011 г. 12:34
21 июня 2011 г. 12:09