PowerShellを使ってディスクの空き容量を調べてみます。
エクスプローラーのプロパティを見てみると
Cドライブは117GBの容量に対して、空き容量が24.9GBでした。
Win32_LogicalDisk
CimクラスのWin32_LogicalDiskを使うと一発で調べることができます。
Get-CimInstance Win32_LogicalDisk
結果
Sizeが全体の容量、FreeSpaceが空き容量ですね。
単位はバイトです。
バイトだと可読性が悪いのでGBに変換します。
PowerShellでは数字の後にGBとつけると、単位として認識してくれます。
そのため、バイトの値/1GBと書くことでGBに変換することができます。
$c=(Get-CimInstance Win32_LogicalDisk)[0] $c.Size/1GB $c.FreeSpace/1GB
結果
エクスプローラーで確認した値とほぼ同じような値が取得できていますね。
(PCを稼働させていると容量が刻一刻と変わっていくので小数点以下は気にしないで下さい。)
$c=(Get-CimInstance Win32_LogicalDisk)[0]
1行目で要素の1番目を直接指定してしまってますが、今回はたまたまCドライブが一番目の要素だったのでハードコーディングしています。悪しからず。
無駄なあがきのワンライナー化
もうちょっとだけ結果の可読性をあげる悪あがきをしてみます。
$c=(Get-CimInstance Win32_LogicalDisk)[0];$c|Add-Member -NotePropertyMembers @{GigaSize=(($c.size)/1GB);GigaFreeSpace=(($c.FreeSpace)/1GB)};$c|select-objectGigaSize,GigaFreeSpace
結果
結果は見やすくなりましたが、コマンドは長くなってしまったのであまり意味のない結果に。
Add-Memberコマンドプロンプトを使って、新しいプロパティをCimInstanceに加えています。
そして最後にSelect-Objectで新しく追加したGigaSize,GigaFreeSpaceの2つのプロパティを出力しています。
Get-PSDriveでもいいかも
Get-PSDriveだと実はもっと簡単に調べられます。
同じ結果が得られます。
$c=(Get-PSDrive -Name C);[pscustomobject]@{"GigaSize"=($c.used+$c.free)/1gb;"GigaFreeSpace"=$c.free/1gb}
終わりに
PowerShell、特にCimInstanceを使ってディスクの空き容量を調べてみました。
なんの役に立つかって?
重要なのは結果ではなくて過程です。
そう、PowerShellと戯れるときはね。
まぁ結局はPSDrive便利!!に落ち着いてしまいました。
というわけで、ここまでお読みいただき、ありがとうございました。