我正在调用以下PowerShell命令并将输出分配给变量:
$my_variable = (Get-Counter -Counter "\Process(process1)\Working Set - Private") | Out-String
输出结果为:
> Timestamp CounterSamples
> --------- --------------
> 4/7/2015 3:54:00 PM \\smachine101\process(process1)\working set - private :
> 15298560
我需要的只是输出中的'15298560'。
你能推荐一种方法来实现这个目标吗?
答案 0 :(得分:3)
首先要谨慎使用Out-String
。这样做就可以将对象销毁为字符串。用于提取所需数据的字符串操作是可能的,但是当原始对象在属性中包含该数据时,浪费了良好的PowerShell。
您只是在寻找熟食价值?这适用于PowerShell 2.0
Get-Counter -Counter "\Process(chrome)\Working Set - Private" |
Select-Object -ExpandProperty CounterSamples |
Select-Object -ExpandProperty CookedValue
当然,您可以使用别名和缩短的属性名称来编写它,但它可以让您了解完整命令的外观。如果你有PowerShell 3.0,你可以使用像这样的点符号
(Get-Counter -Counter "\Process(chrome)\Working Set - Private").CounterSamples.CookedValue
使用Get-Member
的组合并查看对象的各个属性可能是解决此问题的方法。