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

时间:2013-03-21 14:54:04

标签: 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 $_ -Query "SELECT FreePhysicalMemory,TotalVisibleMemorySize FROM Win32_OperatingSystem" | Select FreePhysicalMemory,TotalVisibleMemorySize
}

2 个答案:

答案 0 :(得分:0)

这样的东西?

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

答案 1 :(得分:0)

如果您正在编写脚本,则无需在一个命令中执行所有操作。 Best practice #12

  

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

$pcs | % {New-Object -Typename psobject -Property @{'System'=$_;'Average'=((Get-WMIObject -ComputerName $_ -Class win32_processor | Measure-Object -property LoadPercentage -Average).Average);}}