3

嗨,对不起,我不是脚本专家,我认为我的问题很简单,但我找不到答案。

我这样做:

$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?

4

5 回答 5

1

如果 ip 始终是您可以使用的第二个值:

$i =  (Get-ClusterResource "Cluster IP Address" | get-clusterparameter | 
     Select -expand value )[1]
于 2013-03-26T14:03:30.530 回答
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
于 2013-03-26T14:27:51.753 回答
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参数 onSelect-Object或使用Foreach-Objectcmdlet。

于 2013-03-26T14:05:33.680 回答
0

Select-string 返回 MatchInfo 对象。要仅获取匹配行的值,您需要仅选择“Line”属性的值:

$i = Get-ClusterResource "Cluster IP Address" |
 get-clusterparameter |
 Select -Property value |
 Select-String -SimpleMatch "10." |
 Select -ExpandProperty Line
于 2013-03-26T14:02:32.347 回答
0

与 office365 在线命令有同样的问题,我只想将值捕获到变量中,我这样做了:

$displayname = get-mailbox $whataccount | select displayname

而且,就像你一样,我收到了这个:

"@{DisplayName=Bob Newhart}

这就是我为获得我想要的价值所做的事情:

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

现在变量只包含这个: Bob Newhart

但这与 Ansgar Wiechers 在回答中所说的基本相同。

于 2016-12-17T03:37:21.847 回答