2012-08-29 57 views
0

新手在这里的。我确信这个问题的答案在其他地方存在,但我没有足够的情景来发现它。PowerShell的 - 如何得到一个值从一个对象

我有一个命令:

PS C:\> Get-ClusterSharedVolume "Cluster Disk 1" | select -Expand SharedVolumeInfo | select -Expand Partition | select PercentFree 

它返回:

PercentFree 

----------- 
15.33617 

由于是采取这一结果作为输入另一个系统的一些限制,我想它说:

PercentFree:15.33617 

我该怎么办呢?更好的是,我怎样才能将它弹入“$ freespace”之类的变量中?

奖金的问题:我如何让它只说“15”?我见过{0:N0}在其他脚本中工作,但我newbiness阻止我了解我会如何将其应用到这种情况下:-)

谢谢!

+0

,我发现了一个很复杂的解决方案通过将我的命令的结果为$ a,然后做“ $ b = [regex] :: match($ a,'\ d \ d')。Groups [0] .Value“,然后是”echo'PercentFree:$ b“。远非一个优雅的解决方案,所以我仍然很高兴听到有人能够进一步解释! – DrewJenseric

回答

2

我没有在时刻访问群集,但这对你的作品?

$pf = Get-ClusterSharedVolume "Cluster Disk 1" | Foreach-Object {$_.SharedVolumeInfo.Partition.PercentFree}  
$freespace = 'PercentFree:{0:N0}' -f $pf 

试试这个如果上述不工作(根据您的命令):

$pf = Get-ClusterSharedVolume "Cluster Disk 1" | select -Expand SharedVolumeInfo | select -Expand Partition | select PercentFree 
$freespace = 'PercentFree:{0:N0}' -f $pf.PercentFree 
+0

我喜欢这个解决方案,因为我想我明白了!唉,$ freespace最终是“PercentFree:”而没有实际价值。 – DrewJenseric

+0

打印$ pf时会得到什么? –

+0

什么都没有。 echo $ pf吐出一个空白。 – DrewJenseric