Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellで空きディスク容量とディスク使用量を確認する方法(通知設定の手順も解説)

本記事では、PowerShellを使用してローカルまたはリモートのWindowsホスト上の空きディスク容量とディスク使用量を確認する方法を解説します。さらに、空き容量がしきい値を下回った場合に、ポップアップ通知やメールで管理者に知らせる仕組みの作り方についても紹介します。

WMIとPowerShellでWindowsのドライブ空き容量を確認する方法

Windowsの論理ドライブに関する情報は、Win32_LogicalDiskというWMIクラスから取得できます。

以下のコマンドを実行すると、コンピューター上の論理ドライブに関するすべての情報が表示されます。

Get-WmiObject -Class Win32_LogicalDisk

なお、新しいPowerShell Core 7.xを使用している場合は注意が必要です。PowerShell Coreは.NET CoreベースのためWMIがサポートされておらず、Get-WmiObjectコマンドを実行すると「The term 'Get-WmiObject' is not recognized as a name of a cmdlet, function, script file, or executable program」というエラーが表示されます。この場合は、WMIの代わりにCIMを使用してください。

Get-CimInstance win32_logicaldisk

PowerShellで空きディスク容量とディスク使用量を確認する方法(通知設定の手順も解説)

ディスク空き容量をGBとパーセントで表示する

FreeSpaceプロパティには、各ドライブの空き容量がバイト単位で格納されています。そのままでは読みにくいため、GBに変換し、各論理ディスクの空き容量を合計サイズに対する割合(%)で表示すると便利です。以下のPowerShellスクリプトを使用してください。

Get-WmiObject -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft

PowerShellで空きディスク容量とディスク使用量を確認する方法(通知設定の手順も解説)

このスクリプトを実行すると、論理ドライブの一覧と、それぞれのサイズおよび空き容量の割合が一覧形式で表示されます。

PowerShell Coreでこのスクリプトを使う場合は、Get-WmiObjectGet-CimInstanceに置き換えるだけでOKです。

空き容量がしきい値を下回ったらポップアップ通知する

単に空き容量の情報を表示するだけでなく、指定したしきい値より空き容量が少ない場合に何らかのアクション(メール送信やポップアップメッセージの表示)を実行したい場合は、以下のPowerShellスクリプトが便利です。

$percentWarning = 20
$percentCritcal = 5
$ListDisk = Get-WmiObject -Class Win32_LogicalDisk
Foreach($Disk in $ListDisk){
if ($Disk.size -ne $NULL) {
$DiskFreeSpace = ($Disk.freespace/1GB).ToString('F2')
$DiskFreeSpacePercent = [Math]::Round(($Disk.freespace/$Disk.size) * 100, 2)
if($DiskFreeSpacePercent -lt $percentWarning){
$Message= "Warning!"
if($DiskFreeSpacePercent -lt $percentCritcal){
$Message= "Alert!"
}
$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("Disk $($Disk.DeviceID) has only $DiskFreeSpace GB of free space left",0,$Message,48)
}
}
}

PowerShellで空きディスク容量とディスク使用量を確認する方法(通知設定の手順も解説)

このスクリプトでは、ディスクの残り空き容量のしきい値として20%(警告)と5%(重大)を設定しています。いずれかのディスクの空き容量がこれらの値を下回ると、モーダルの情報ウィンドウが表示されます。ポップアップ通知として表示するほか、即座にディスククリーンアップツール(cleanmgr.exe)を起動するよう変更することも可能です。

管理者にメールで通知する

問題が発生した際に管理者へメールで通知したい場合は、SMTPサーバー(Exchangeサーバーやその他のSMTPサービス、Windows Serverの組み込みSMTP機能でも可)経由で、Send-MailMessageコマンドレットを使ってメールを送信できます。

Send-MailMessage -To “srv_admin@woshub.com” -From “$env:computername@woshub.com” -Subject “Insufficient disk space on server $env:computername” -Body “Disk $($Disk.DeviceID) has only $DiskFreeSpace GB left” -Credential (Get-Credential) -SmtpServer smtp.woshub.com -Port 587

この例では、SMTPホストへの接続用の資格情報を対話的に入力する必要があります。信頼されたホストからのメッセージを認証なしで受け付けるようSMTPホスト側を構成するか、ファイルに保存した資格情報を使ったSMTP認証を設定してください(マネージドサービスアカウントを使ったメール送信はできません)。

このPowerShellスクリプトは、タスクスケジューラで定期的に実行したり、Windowsサービスとして構成したりできます。こうしておけば、Windowsホストの空き容量が不足した時点で自動的に管理者へ通知が届きます。

リモートのWindowsホストからPowerShellで空きディスク容量を取得する

Invoke-Commandコマンドレットを使用すると、リモートコンピューター上でPSスクリプトを実行し、残りの空き容量をまとめてチェックできます。

Invoke-Command -ComputerName srv01,srv02,srv03 -FilePath "C:\PS\checkfreespace.ps1"

空き容量を確認したいサーバーがActive Directoryドメインに所属している場合は、Get-ADComputerコマンドレットでサーバーの一覧を取得し、各ホストに対してスクリプトを実行できます。

$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows Server*" -and enabled -eq "true"').Name
Invoke-Command -ComputerName $computers -FilePath "C:\PS\checkfreespace.ps1" -ErrorAction SilentlyContinue

また、RemoteWMIを使用して、リモートコンピューターから直接WMIデータを取得することもできます。

Get-WmiObject -Class Win32_logicalDisk -ComputerName srv01,srv02,srv03

ここまで紹介したのは、自前で構築できる最もシンプルなディスク容量監視ソリューションです。監視対象のホストが多数ある場合は、Zabbix、Icinga、PRTG、Nagiosなどの本格的な監視システムの導入を検討するのがおすすめです。

  1. Windows 10/8/7のディスク容量を解放する7つの方法を徹底解説

    ハードディスクの容量がどれだけ大きくても、使っているうちにデータが蓄積され、いつか必ず「ディスクの空き領域が不足しています」という警告に直面することになります。空き容量がほとんどなくなり、少しでもスペースを取り戻したいとお悩みの方は、ぜひこの記事をご覧ください。 ここでは、Windows 10・8・7でディスク容量を解放するための実践的な方法を厳選してご紹介します。 Windowsでディスク容量を増やす最適な方法 1. 手軽な方法:Disk Analyzer Proを活用する 手間をかけずに効率よく空き容量を回復したいなら、サードパーティ製ソフトの利用がおすすめです。「Disk Analyze

  2. Linuxでディスク容量を確認・管理する方法|df・duコマンドの使い方を徹底解説

    ディスク容量の管理は、使用するプラットフォームに関わらず、すべてのコンピューターユーザーにとって重要な課題です。特にシステム管理者の方は、オンライン・オフライン問わずシステムの健全性を常に監視する必要があります。Linuxではディスク容量が不足するとアップデートが妨げられ、深刻なエラーにつながる可能性もあるからです。 そこで、ディスク全体の空き容量や特定のファイルが使用している容量を把握するためには、「df」コマンドと「du」コマンドを使いこなせるようになることが不可欠です。 本記事では、dfコマンドとduコマンドを使ってLinux上のディスク容量を確認・管理する方法を詳しく解説します。 df