2016-02-29 62 views
1

我是相当新的PowerShell的PowerShell的:获取对象值为int数组

有人能说明一下最简单的方式从一个对象的值复制到一个基本的整数数组而不复制原始对象。

很抱歉,如果这是混乱的,但我的意思是,我想捕捉对象的值,并把它们放在一个整数数组,我可以那么做简单的算术上的值

例如

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

在基于Windows Server 2008虚拟机在工作中这将返回两个值

我想要得到的平均所以我试图

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

这不能工作,因为这些值不是Int类型。

我想铸造的价值观

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

但这导致不能转换错误。

我知道问题是什么,但如果有人能够解释这个基本的解决方案,我会遇到这个问题很多,我知道必须有一个定义的解决方案或完全避免这个问题的方法。

谢谢。

PS:如果可能的话,请提供了另一种解决方案,因为我真的想知道如何得到一个对象的值到一个整数数组,以便对这些值执行算术运算。

谢谢。

+0

'Select-Object' - >'ForEach-Object' – PetSerAl

回答

1

除了EBGreen的回答,您可以使用-ExpandProperty参数的Select-Object

$ComputerCpu = Get-WmiObject win32_processor -computer "MyComputer" | 
    Select-Object -ExpandProperty LoadPercentage 

你的代码的其余部分将工作即可。

+0

谢谢。这适用于@EBGreen解决方案没有的地方(但我不知道为什么)。 – ATtheincredibleaf

1

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

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

由于某种原因,这返回$平均为0 – ATtheincredibleaf

+0

@ATtheincredibleaf可能平均值为零(或小于1并截断为'[int]')? – briantist