Test-Host & Where-Online

Уже не в первый раз пишу эти функции, и уверен что аналогичных полно на просторах интернета (и точно есть отличный командлет Ping-Host в PSCX), но тем не менее задачи очень востребованы, и спрашивают часто. Так что теперь буду отправлять к себе в блог🙂

Итак, Test-Host и Where-Online:

Function Test-Host ($Name)
{
    $ping = new-object System.Net.NetworkInformation.Ping
    trap {Write-Verbose "Ошибка пинга"; $False; continue}
    if ($ping.send($Name).Status -eq "Success" ) { $True }
    else { $False }
}

Filter Where-Online
{
    $ping = new-object System.Net.NetworkInformation.Ping
    trap {Write-Verbose "Ошибка пинга"; Continue}
    if ($ping.send($_).Status -eq "Success" ) { $_ }
}

Использовать как то так🙂

PS C:\Root> Test-Host ya.ru
True
PS C:\Root> Test-Host microsoft.com
False
PS C:\Root> Test-Host notexist
False

Или так:

PS C:\Root> Get-Content Computers.txt | Where-Online | Foreach {psexec.exe \\$_ ipconfig}
Опубликовано в Learn, PowerShell, Scripting, Tips. 2 комментария »

комментария 2 to “Test-Host & Where-Online”

  1. Oleg Medvedev Says:

    Для локальной сети я бы записал строку

    if ($ping.send($_).Status -eq «Success» )

    как
    if ($ping.send($_, 50).Status -eq «Success» )

    Для уменьшения таймаута. В локальных сетях отклик обычно небольшой, так что можно ускорить обработку компов.

  2. Простенькая инвентаризация ПО на компьютерах « PowerShell и другие скрипты Says:

    […] применить Quest AD Cmdlets, а для проверки их доступности Where-Online то всё будет очень […]


Обсуждение закрыто.

%d такие блоггеры, как: