0

PowerShell を使用して一連のサーバーから現在の CPU 負荷を取得するためのスクリプトをまとめようとしています。これを行う簡単な方法はありますか。Get-WmiObject win32_processor | を使用しています。負荷率を選択します。

基本的に、CPU 負荷を取得して、使用率が 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"
}
}
4

1 に答える 1

0

$Serversコレクションにホスト名が入力されていると仮定すると、それほど遠くはありません。クエストツールを持っていないので、コレクションを確認できません。

# 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"
    }
}
于 2013-08-22T13:33:14.860 に答える