Вчера днем ​​я смог получить доступ к WMI, сегодня утром я не могу получить доступ к WMI, и наоборот

Мой скрипт powershell определяет текущего пользователя удаленного компьютера с Windows 7 и будет выводить

userId=DOMAIN\username

Если в данный момент пользователь не вошел в систему, скрипт выдаст

userId=No One Currently Logged In

И если сценарий не может получить доступ к WMI удаленного компьютера, сценарий выведет

userId=CannotConnectToWMI

Я запустил скрипт вместе с запуском WBEMTEST, чтобы проверить, можно ли получить доступ к WMI на удаленной машине.

Я действительно озадачен, потому что вчера днем ​​я смог получить доступ к WMI на нескольких удаленных машинах, а сегодня утром не могу. Ниже приведен график:

Результаты скрипта и WBEMTEST

Почему это происходит? Как убедиться, что 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-адрес перед выполнением любого тестирования.

Другие вопросы по тегам