powershell函数,用于获取多台服务器的CPU和内存使用情况

powershell函数,用于获取多台服务器的CPU和内存使用情况,powershell,Powershell,下面是我的函数的作用 { $input|Foreach-Object{Get-WmiObject -computername $_ win32_processor | Measure-Object -property LoadPercentage -Average | Select SystemName, Average} } 我知道我不能把SystemName放在最后一条管道上。如何向包含系统名称的结果中添加另一列。我还有一个单独的内存使用代码,我想结合这两个代码(cpu和内存使用) 像这样

下面是我的函数的作用

{
$input|Foreach-Object{Get-WmiObject -computername $_ win32_processor | Measure-Object -property LoadPercentage -Average | Select SystemName, Average}
}
我知道我不能把SystemName放在最后一条管道上。如何向包含系统名称的结果中添加另一列。我还有一个单独的内存使用代码,我想结合这两个代码(cpu和内存使用)

像这样的

$input|
Foreach-Object {
 Get-WmiObject -computername $_ -Query "SELECT __Server,FreePhysicalMemory,TotalVisibleMemorySize FROM Win32_OperatingSystem" |
  Select @{l='SystemName';e={$_.__Server}},FreePhysicalMemory,TotalVisibleMemorySize
}

如果您正在编写脚本,则不必在一个命令中完成所有操作

从PowerShell cmdlet或函数输出信息的正确方法是创建包含数据的对象,然后使用写入输出将该对象写入管道


为什么没有将内容传递给-computername?我得到一个错误,说计算机是空的,当我在我的机器上测试时,
$pcs='Computer1','Computer2'
,我使用的是PS 3.0 OK,它自己工作,但当我把它放在函数形式中时,它不工作。我也在PS 2.0上测试,它工作了。我没有使用
$input
,因为这是一个特殊的变量名。
函数foo([string[]]$pcs){return($pcs |%{New Object-Typename psobject-Property@{'System'=$$\Average'=((Get wmioobject-ComputerName$\Class win32|处理器|度量对象-Property LoadPercentage-Average).Average)}}
类似的内容?基本上,我想输出computername、cpu和内存使用情况。
$input|
Foreach-Object {
 Get-WmiObject -computername $_ -Query "SELECT __Server,FreePhysicalMemory,TotalVisibleMemorySize FROM Win32_OperatingSystem" |
  Select @{l='SystemName';e={$_.__Server}},FreePhysicalMemory,TotalVisibleMemorySize
}
$pcs | % {New-Object -Typename psobject -Property @{'System'=$_;'Average'=((Get-WMIObject -ComputerName $_ -Class win32_processor | Measure-Object -property LoadPercentage -Average).Average);}}