2012-03-10 2 views
1

test-connection server | select-object *Возврат StatusCode из тестового соединения

возвращает много свойств, в том числе StatusCode.

Как я могу вернуть только это значение? Мое предположение было бы

$r = test-connection server 
$r.statuscode 

, но это не работает. Как это сделать?

EDIT

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394350%28v=vs.85%29.aspx имеет больше информации о StatusCode Я хотел бы, чтобы получить .. Нет удачи еще!

ответ

4

Test-Connection по умолчанию предоставит вам коллекцию (4 System.Management.ManagementObject объектов). Он использует внутренний класс WMI Win32_PingStatus.

(Test-Connection server).GetType().FullName 

Выходы:

System.Object[] 

Таким образом, вы можете сделать это:

(Test-Connection server -Count 1).StatusCode 

или это:

(Test-Connection server)[0].StatusCode 

Не забывайте, что некоторые Пинги может потерпеть неудачу, так что если вы просто проверяете, что это не обязательно означает, что нет ть соединение.

Вы также можете попробовать позвонить Win32_PingStatus непосредственно, как это:

Get-WmiObject -Class Win32_PingStatus -Filter "Address='server'" | Select-Object -Property Address,ResponseTime,StatusCode 
+0

Это не работает, к сожалению. Я обновил свой вопрос с дополнительной информацией! – Sune

+0

@Sune какая часть не работает? Получение значения свойства или определенного кода, который вы ожидали? Он вернул свойство для меня, но попробуйте напрямую вызвать Win32_PingStatus с помощью 'Get-WmiObject', чтобы узнать, есть ли у вас другой код состояния. Я добавил пример кода. –

1

Почему вы не просто попробовать:

$r = Test-Connection server -Quiet 

$ г булевой

+1

Возможно, OP хочет проверить один из 21 возможных кодов и предпринять соответствующие действия. [Win32_PingStatus] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394350 (v = vs.85) .aspx) –

1
$r = test-connection computername -count 1 
$r.statuscode 

это работает ,

Смежные вопросы