2013-08-22 1 views
0

Попытка собрать сценарий для получения текущей загрузки процессора из набора серверов с помощью PowerShell. Есть простой способ сделать это. Я использую Get-WmiObject win32_processor | выберите LoadPercentage.Простой способ получить нагрузку на процессор от Windows Server через PowerShell

В основном я пытаюсь получить загрузку процессора и отображать красный цвет, если выше 75% использования и зеленый, если ниже 75% использования. Предпочтительно отображается процент нагрузки.

До сих пор у меня есть эта неполна и, возможно, совершенно неправильно:

$Servers = Get-QADComputer -sizelimit 0 | where {$_.Name -like "*myserver*"} | select Name 
foreach($Server in $Servers){ 
    $I = $Server.Name 
    $result = Get-WmiObject win32_processor -ComputerName $Server.Name | select LoadPercentage | ft 
    if($result -eq $null){ 
    Write-Host $Server.LoadPercentage "Less than 75% CPU Load" -ForegroundColor "Green" 
} 
} 
+0

возможно дубликат [Как найти ЦП и ОЗУ использование с помощью Powershell?] (Http://stackoverflow.com/questions/6298941/how-do-i-find-the-cpu-and- ram-usage-using-powershell) –

ответ

0

Предполагая, что $Servers коллекция заселяться с именами хостов, вы не так уж далеко. У меня нет инструментов Quest, поэтому я не могу проверить коллекцию.

# Best practice: avoid mistyped variable names 
set-psdebug -strict 
$Servers = Get-QADComputer -sizelimit 0 | where {$_.Name -like "*myserver*"} | select Name 
# Best practice: avoid magic numbers; readonly variable for 
new-variable -name CPULIMIT -value 75 -option readonly 

foreach($Server in $Servers){ 
    $result = Get-WmiObject win32_processor -ComputerName $Server.Name 
    # TODO: add error handler here in case $server is unavailable 
    # Compare the wmi query result to the limit constant 
    if($result.LoadPercentage -le $CPULIMIT){ 
     # Write a formatted string that contains the server name and current load 
     Write-Host $("Less than 75% CPU Load on {0} ({1}%)" -f $server, $result.LoadPercentage) -ForegroundColor "Green" 
    } else { 
     # A warning message would be usefull too 
     Write-Host $("Over than 75% CPU Load on {0} ({1}%)" -f $server, $result.LoadPercentage) -ForegroundColor "Red" 
    } 
} 
+0

Thats, конечно, возвращает результат, который является большим, но он не возвращает нагрузку%. Например, я получаю результат: Менее 75% загрузки процессора на MYSERVER2 (%) Любые идеи? Большое вам спасибо за помощь. – user2707263

+0

@ user2707263, запустите Get-WmiObject win32_processor -ComputerName myserver2 и проверьте, существует ли разумное значение для атрибута LoadPercentage. – vonPryz

+0

Да, это дает точное значение нагрузки в то время, например: Уровень: 6 LoadPercentage: 2 Производитель: GenuineIntel MaxClockSpeed: 2933 Название: Intel (R) Xeon (R) CPU X5670 @ 2,93 ГГц – user2707263