PowerShellでリモートサーバのCPU使用率、メモリ使用率、ディスク使用率の情報を取得します。
CPU使用率
Get-WmiObject -ComputerName localhost Win32_PerfFormattedData_PerfOS_Processor | Select Name,PercentProcessorTime
Name PercentProcessorTime
---- --------------------
_Total 4
0 5
1 5
2 0
3 5
4 0
5 5
6 0
7 11
メモリ使用率
Get-WmiObject -ComputerName localhost Win32_OperatingSystem | %{(($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)/$_.TotalVisibleMemorySize) * 100}
55.7645735990054
ディスク使用率
Get-WmiObject -ComputerName localhost Win32_LogicalDisk -Filter DriveType=3 | select DeviceID, @{N="% Used";E={($_.Size-$_.FreeSpace)/$_.Size*100}}
DeviceID % Used
-------- ------
C: 15.6989519134962
E: 60.7720861354985
Select-Objectに指定する集計プロパティの書式は、@{N="ラベル";E={値を返すスクリプトブロック}}のように連想配列で指定します。NはName、EはExpressionのように省略せずに指定しても問題ありません。
ただ、上記だと小数点以下の桁数が多すぎるので小数点1位で四捨五入させます。
またドライブレターが多い場合に昇順にならない可能性があるので明示的にソートさせます。
Get-WmiObject -ComputerName localhost Win32_LogicalDisk -Filter DriveType=3 | select DeviceID, @{N="% Used";E={"{0:N1}" -f (($_.Size-$_.FreeSpace)/$_.Size*100)}} | Sort-Object DriveID
DeviceID % Used
-------- ------
C: 15.7
E: 60.8
ここまできたら他の項目も欲しくなったので、以下の項目を取得しました。
ドライブレター/総容量/使用容量/空き容量/使用率/空き率
Get-WmiObject -ComputerName localhost Win32_LogicalDisk -Filter DriveType=3 | select DeviceID, @{N="Capacity(GB)";E={"{0:N0}" -f ($_.Size/1GB)}}, @{N="Used Space(GB)";E={"{0:N0}" -f (($_.Size-$_.FreeSpace)/1GB)}}, @{N="Free Space";E={"{0:N0}" -f (($_.FreeSpace)/1GB)}}, @{N="% Used";E={"{0:N1}" -f (($_.Size-$_.FreeSpace)/$_.Size100)}},@{N="% Free";E={"{0:N1}" -f (($_.FreeSpace)/$_.Size100)}} | Sort-Object DriveID
DeviceID : C:
Capacity(GB) : 920
Used Space(GB) : 144
Free Space : 775
% Used : 15.7
% Free : 84.3
DeviceID : E:
Capacity(GB) : 2,795
Used Space(GB) : 1,698
Free Space : 1,096
% Used : 60.8
% Free : 39.2
コメント