对不起,我不是一个脚本专家,我认为我的问题很简单,但我找不到答案。
我这样做:
$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?
答案 0 :(得分:1)
如果ip始终是您可以使用的第二个值:
$i = (Get-ClusterResource "Cluster IP Address" | get-clusterparameter |
Select -expand value )[1]
答案 1 :(得分:1)
Select-String不是为对象操作而设计的,它设计用于对文本(文件)进行操作。 PowerShell中用于过滤对象的工具是Where-Object 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。
答案 2 :(得分: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
答案 3 :(得分:0)
Select-string返回MatchInfo对象。要获得匹配行的值,您只需要选择“Line”属性的值:
$i = Get-ClusterResource "Cluster IP Address" |
get-clusterparameter |
Select -Property value |
Select-String -SimpleMatch "10." |
Select -ExpandProperty Line
答案 4 :(得分:0)
在office365在线命令遇到同样的问题,我想把这个值只捕获到变量中,我这样做了:
$displayname = get-mailbox $whataccount | select displayname
而且,就像你一样,我收到了这个:
"@{DisplayName=Bob Newhart}
这就是我为获得我想要的价值而做的事情:
$displayname = get-mailbox $whataccount | select displayname
$displayname = $displayname.displayname
现在变量仅包含:Bob Newhart
但这与Ansgar Wiechers在回答中所说的基本相同。