PowerShell を使用してディスク容量を確認する方法
ディスク容量を常に監視するのは面倒な場合があります。特に複数のシステムを管理している場合や、ファイルエクスプローラーを何度も開かずに空き容量を素早く確認したい場合などです。PowerShellはこうした用途に驚くほど便利で、スクリプトに精通していなくても有用な情報を得ることができます。基本的に、PowerShellはローカルドライブだけでなくリモートマシンも確認できるため、トラブルシューティングやサーバーの監視に非常に便利です。ただし、もちろん、意味のあるデータを取得するには、これらのコマンドを正しく実行し、スムーズに動作するようにいくつかの設定を微調整する必要があります。
PowerShellでディスク容量を確認する方法 – 基本的な方法
すべてのドライブに関する情報を取得する
まず最初に、 Get-PSDrive が何をするのかを理解しましょう。このコマンドは、ファイルシステムだけでなく、ネットワークドライブやプロバイダードライブなど、PowerShell が認識するすべてのドライブを一覧表示します。ストレージドライブのみに焦点を絞るには、それらをフィルターする必要があります。通常は、C: や D: などのストレージ領域を使用しているドライブや、ストレージを含むネットワーク共有ドライブを表示します。よく使われるコマンドは次のとおりです。
Get-PSDrive | Where-Object { $_. Free -gt 0 }
これにより、空き領域があるすべてのドライブが取得され、空き領域がゼロまたはまったくないと報告されるもの (システム ドライブまたは特殊ドライブである可能性があります) が除外されます。
ただし、より明確にするために、特にファイルシステムベースのローカル ディスクだけが必要な場合は、次のように指定するといいでしょう。
Get-PSDrive -PSProvider FileSystem | Select-Object Name, Free, Used, Provider
この方法では、ローカル ディスクのみが表示されるため、初心者向けや簡単なチェックのためにストレージを監視する場合に、煩雑さが軽減され、より便利になります。
リモート システムを監視する — なぜそうしないのでしょうか?
サーバーやリモートPCのネットワークを管理する場合も、PowerShellで対応できます。必要なのは、権限とリモート処理の有効化だけです。コマンドは基本的に以下のとおりです。
Invoke-Command -ComputerName <ComputerName> -ScriptBlock {Get-PSDrive -PSProvider FileSystem | Select-Object Name, Free, Used}
<ComputerName> を対象のマシン名またはIPアドレスに置き換えます。例えば、「Server01」というサーバーをチェックしたい場合は、以下のようになります。
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-PSDrive -PSProvider FileSystem | Select-Object Name, Free, Used}
これにより、各ファイルシステムパーティションの空き領域と使用領域が表示されます。注意すべき点は、リモート処理が有効になっていること、そしてユーザーアカウントに適切な権限が付与されていることを確認することです。ロックダウンされたサーバーでは、リモート処理がそのままでは動作せず、リモートシステムでEnable-PSRemotingコマンドを実行して有効化する必要がある場合もあります。これもまた厄介な問題です。
ある設定ではこのコマンドはすぐに動作しましたが、別の設定では適切な権限を設定するかリモート処理を有効にするまで動作しませんでした。なぜ状況が異なるのかは分かりませんが、よくある落とし穴です。
自動化とアラートの受信 – ちょっとしたスクリプトの魔法
より高度な機能を求める方は、これをタスクスケジューラなどのスケジュールで実行されるスクリプトに組み込むことで、ディスク容量を自動的にチェックし、空き容量が例えば10%を下回った場合にメールアラートを送信することもできます。これは、管理者が面倒を見ずに常に監視を行いたい場合に最適です。
たとえば、簡単なスクリプトは次のようになります。
if ((Get-PSDrive -PSProvider FileSystem | Where-Object { $_. Free -lt 10GB })) { Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Low Disk Space Alert" -Body "One of your drives is running low on space." }
このセットアップでは SMTP 設定をもう少し調整する必要がありますが、概念は単純です。ディスクをチェックし、スペースに問題がある場合は自動的に誰かに通知します。
もちろん、環境によって動作が異なるため、これらのスクリプトやコマンドをご自身の環境でテストすることが重要です。PowerShell は、追加の権限やファイアウォールルールがないと接続を拒否する場合があります。また、一部の Windows バージョンでは、リモート処理を明示的に有効にする必要があります。
もちろん、Windows は本来よりも難しく設定する必要があります。しかし、一度設定してしまえば、簡単なチェックや継続的な監視に非常に役立ちます。
まとめ
- Get-PSDriveを使用してドライブを一覧表示し、空き容量を確認します。
- Where-Objectを使用してフィルタリングすると、使用可能なストレージがあるドライブのみが表示されます。
- リモート チェックにはInvoke-Commandを使用して、リモート処理が有効になっており、権限が適切であることを確認します。
- 手動チェックはすぐに古くなるため、アラートや定期的なチェックを自動化するスクリプトを作成します。
まとめ
総じて、PowerShellはローカルシステムでもリモートシステムでも、ディスク容量を監視するのに驚くほど便利なツールです。必ずしも完璧に簡単というわけではありませんが、少し調整するだけで、多くの頭痛の種や予期せぬクラッシュを防ぐことができます。ただし、まずは重要度の低いマシンでテストすることを忘れないでください。このツールが、エクスプローラーを頻繁に開かずにストレージを管理できるようになることを願っています。
関連記事
この記事は役に立ちましたか?