Для проверки связи с серверами я использую командлет Test-Connection
. В определении команды Test-Connection я определяю размер буфера, количество отправляемых эхо-тестов и возвращает ли она подробную информацию о состоянии эхо-теста или простое логическое значение. Я указываю для параметра ea (ea - псевдоним для параметра ErrorAction
) значение 0. Значение 0 указывает командлету не отображать информацию об ошибке (ошибка отображается, когда эхо-запрос не выполняется).
Вот как будет выглядеть Pingtest:
$servers = “dc1″,”dc3″,”sql1″,”wds1″,”ex1”
Foreach($s in $servers)
{
if(!(Test-Connection -Cn $s -BufferSize 16 -Count 1 -ea 0 -quiet))
{
“Problem connecting to $s”
“Flushing DNS”
ipconfig /flushdns | out-null
“Registering DNS”
ipconfig /registerdns | out-null
“doing a NSLookup for $s”
nslookup $s
“Re-pinging $s”
if(!(Test-Connection -Cn $s -BufferSize 16 -Count 1 -ea 0 -quiet))
{“Problem still exists in connecting to $s”}
ELSE {“Resolved problem connecting to $s”} #end if
} # end if
} # end foreach
Таким образом, вы можете быть уверены, что связь активна, и вы можете продолжить выполнение.
Надеюсь, это поможет.