2013-03-26 2 views
2

Здравствуйте, извините, я не являюсь разработчиком сценариев, я думаю, что моя проблема довольно проста, но я не могу найти ответ.Powershell выберите конкретное значение

я могу это сделать:

$i = Get-ClusterResource "Cluster IP Address" | get-clusterparameter | Select -Property value 

И получаем:

Value 
----- 
Cluster Network 2 
10.32.32.36 
255.255.252.0 
2 
0 
0 
255.255.252.0 
1/1/0001 12:00:00 AM 
1/1/0001 12:00:00 AM 
255.255.255.255 
0.0.0.0 
255.0.0.0 

Но единственная информация, мне нужно, это ф "10.32.32.36", так что я пробовал:

$i = Get-ClusterResource "Cluster IP Address" | get-clusterparameter | Select -Property value | Select-String -SimpleMatch "10." 

Но затем я получаю $i = @{Value=10.32.32.36}

Я не знаю, почему он добавляет @{value=xxxx}, как его удалить и только IP?

ответ

1

Если вы хотите, чтобы адрес кластера, вы должны получить только параметр Address кластера:

$i = Get-ClusterResource "Cluster IP Address" ` 
     | Get-ClusterParameter Address ` 
     | select Value 

Этой команда возвращает объект со свойством Value, который содержит IP-адрес. Если вы хотите только фактический IP-адрес, используйте вместо этого:

$i = (Get-ClusterResource "Cluster IP Address" ` 
     | Get-ClusterParameter Address).Value 
+0

Спасибо за помощь! – user2211801

0

Select-string возвращает объекты MatchInfo. Чтобы получить только значение согласованной линии, вам нужно выбрать из только значение свойства «Line»:

$i = Get-ClusterResource "Cluster IP Address" | 
get-clusterparameter | 
Select -Property value | 
Select-String -SimpleMatch "10." | 
Select -ExpandProperty Line 
1

если ф всегда второе значение, которое вы можете использовать:

$i = (Get-ClusterResource "Cluster IP Address" | get-clusterparameter | 
    Select -expand value)[1] 
1

Select-String не предназначен для работы с объектами, он предназначен для работы с текстом (файлами). Инструмент в PowerShell предназначен для объектов фильтрации является командлет Where-Object:

$i = Get-ClusterResource "Cluster IP Address" | 
    get-clusterparameter | 
    Where-Object { $_.Value -like '10.*' } | 
    Foreach-Object { $_.Value } 

Другое дело в том, что вы хотите получить значение, а не пользовательский объект с одним свойством (это то, что select -property value будет создавать). Таким образом - вы можете использовать параметр -expand на Select-Object или вместо этого использовать командлет Foreach-Object.

0

Имея такую ​​же проблему с Office365 онлайн командой, где я хотел поймать только значение в переменной, я сделал это:

$displayname = get-mailbox $whataccount | select displayname 

И, так же, как ты, я получил это:

"@{DisplayName=Bob Newhart} 

Это то, что я сделал, чтобы получить только значение, я хотел:

$displayname = get-mailbox $whataccount | select displayname 
$displayname = $displayname.displayname 

Теперь переменная содержит только это: Bob Newhart

Но это в основном то же самое, что говорит Ansgar Wiechers в своем ответе.

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