Здравствуйте. Волею судеб вынужден был стокнутся с WMI. Проблем особых нет, в принципе всё просто и понятно, но есть следующий момент:
Допустим я хочу написать скрипт, который переодически выполняет некоторые запросы к серверу. Время между запросами варьируется, допустим, от пяти минут до часа.
Так вот, если между запросами проходит больше чем пятнадцать минут (примерно) запрос выполнить не удаётся, он вызывает ошибку: «The object invoked has disconnected from its clients».
Я смотрел сниффером RPC пакеты, и в случае такой ошибки присутствует пакет, содержащий код ошибки RPC_E_DISCONNECTED.
Вот тестовый VBS скрипт:
strComputer = "10.77.0.202"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemService = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", "Administrator", "1")
Set colItems = objSWbemService.ExecQuery("select Name from Win32_ComputerSystem",,48)
For Each objItem in colItems
Wscript.Echo "Name: "& objItem.Name
Next
WScript.Sleep 2200000
Wscript.Echo "test"
Set colItems = objSWbemService.ExecQuery("select Name from Win32_ComputerSystem",,48)
For Each objItem in colItems
Wscript.Echo "Name: "& objItem.Name
Next
Насколько я понимаю, где-то на стороне происходит разрыв сессии в случае если от клиента в течении определенного времени не поступало запросов.
Скажите, уважаемые знатоки, как правильно обойти эту проблему?