从PowerShell命令输出中获取特定部分

时间:2015-04-07 23:00:42

标签: powershell

我正在调用以下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'。

你能推荐一种方法来实现这个目标吗?

1 个答案:

答案 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的组合并查看对象的各个属性可能是解决此问题的方法。