Вчера днем я смог получить доступ к WMI, сегодня утром я не могу получить доступ к WMI, и наоборот
Мой скрипт powershell определяет текущего пользователя удаленного компьютера с Windows 7 и будет выводить
userId=DOMAIN\username
Если в данный момент пользователь не вошел в систему, скрипт выдаст
userId=No One Currently Logged In
И если сценарий не может получить доступ к WMI удаленного компьютера, сценарий выведет
userId=CannotConnectToWMI
Я запустил скрипт вместе с запуском WBEMTEST, чтобы проверить, можно ли получить доступ к WMI на удаленной машине.
Я действительно озадачен, потому что вчера днем я смог получить доступ к WMI на нескольких удаленных машинах, а сегодня утром не могу. Ниже приведен график:
Почему это происходит? Как убедиться, что WMI всегда доступен? Вчера я опубликовал еще один вопрос о WMI: https://stackru.com/questions/19409747/wbemtest-to-windows-7-says-the-rpc-server-is-unavailable
Пожалуйста помоги
@vonPryz
В скрипте есть Test-Connection. Ниже весь сценарий
$line_array = @()
$multi_array = @()
[hashtable]$my_hash = @{}
$Sender_IP = $NULL
$bios = $NULL
$wmi = $NULL
foreach ($i in $args){
$line_array+= $i.split(" ")
}
foreach ($j in $line_array){
$multi_array += ,@($j.split("="))
}
foreach ($k in $multi_array){
$my_hash.add($k[0],$k[1])
}
$Sender_IP = $my_hash.Get_Item("sender-ip")
try{
Test-Connection $Sender_IP -count 1 -ErrorAction Stop | out-null
}
catch [Exception]
{
$userId = "userId=CannotPing"
return $userId
}
try{
$wmi = gwmi -class win32_computerSystem -computer $Sender_IP -ErrorAction Stop
}
catch [Exception]{
$userId = "userId=CannotConnectToWMI"
return $userId
}
try{
$userId = ($wmi).username
}
catch [Exception]{
$userId = "userId=CannotFindLastUserLoggedOn"
return $userId
}
if ($userId -ne $NULL){
$userID = "userId="+$userId
return $userId
}
elseif ($userID -eq $NULL)
{
$userId = "userId=No One Currently Logged In"
return $userId
}
РЕДАКТИРОВАТЬ
Я подключался к этим компьютерам для проверки разрешений DCOM, а затем понял, что один из них превратился в Windows XP. Кажется, что IP-адреса переключаются на разные компьютеры. Я буду сравнивать по полному имени домена.
2 ответа
Добавлять Test-Connection
к вашему сценарию и попробуйте WMI, только если проверка связи с хостом прошла успешно.
В настоящее время я тестирую несколько IP-адресов, которые являются Windows 7. Когда я переместился на один из проблемных IP-адресов, я заметил, что это Windows XP. Затем я понял, что IP-адреса компьютеров меняются каждые несколько дней, поэтому 10.10.10.10 может принадлежать ComputerA.contoso.com один день, а несколько дней спустя может принадлежать ComputerB.contoso.com.
Теперь, прежде чем проводить какое-либо тестирование на нескольких компьютерах, я иду по их Полному квалифицированному доменному имени и затем нахожу соответствующий IP-адрес перед выполнением любого тестирования.