Powershell:获取int数组的对象值

时间:2016-02-29 18:32:58

标签: arrays powershell object casting

我是PowerShell的新手

有人可以解释一下将对象中的值复制到基本整数数组中的最简单方法,而不会复制原始对象。

很抱歉,如果这令人困惑,但我的意思是我想捕获对象值并将它们放在一个整数数组中,然后我可以对值进行简单算术

例如

$ComputerCpu = Get-WmiObject win32_processor -computer "MyComputer" | `
    Select-Object {$_.LoadPercentage}

在工作的Windows Server 2008 VM上,这将返回两个值

我想得到一个平均值所以我试过

$average = ($ComputerCpu[0] + $ComputerCpu[1]) / 2

这不起作用,因为值不是Int。

类型

我尝试过投射值

$average = ([int]$ComputerCpu[0] + [int]$ComputerCpu[1]) / 2

但这导致无法转换错误。

我知道问题是什么,但如果有人能解释这个问题的基本解决方案会很好,因为我经常遇到这个问题而且我知道必须有一个已定义的解决方案或完全避免这种情况的方法。

感谢。

PS:如果可能请不要提供替代解决方案,因为我真的想知道如何将对象值转换为整数数组以便执行对这些值进行算术。

感谢。

2 个答案:

答案 0 :(得分:1)

除了EBGreen的回答,您还可以使用-ExpandProperty的{​​{1}}参数:

Select-Object

然后你的其余代码就可以了。

答案 1 :(得分:1)

引用属性而不是整个对象。所以:

$average = ($ComputerCpu[0].LoadPercentage + $ComputerCpu[1].LoadPercentage) / 2