2013-03-26 316 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 

但我需要的唯一信息是IP 「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 

上面的命令將返回一個對象與持有的IP地址的屬性Value。如果你只想實際的IP地址,用這個來代替:

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

感謝您的幫助! – user2211801 2013-03-26 15:09:47

0

Select-string返回MatchInfo對象。要獲得匹配的行爲僅僅是價值,您需要選擇了「線」屬性只值:

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

如果IP始終是第二個值,你可以使用:

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

Select-String不用於操作對象,它設計用於對文本(文件)進行操作。專爲過濾對象在PowerShell中的工具就是對象cmdlet:

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

另一件事是,你想要的價值,而不是與單個屬性自定義對象(這就是select -property value將創建)的事實。因此 - 您可以使用-expand參數Select-Object或使用Foreach-Object cmdlet代替。

0

與office365在線命令,在這裏我想追上剛值到一個變量有同樣的問題,我這樣做:

$displayname = get-mailbox $whataccount | select displayname 

而且,就像你,我收到這樣的:

"@{DisplayName=Bob Newhart} 

這是我做過什麼讓剛剛我想要的值:

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

現在變量只包含這個:Bob Newhart

但是,這是基本相同什麼安斯加爾Wiechers說,在他的回答。