適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

【Get-CimInstance,Get-PSDrive】ディスクの空き容量を調べる【PowerShell】

PowerShellを使ってディスクの空き容量を調べてみます。

エクスプローラーのプロパティを見てみると f:id:shinmai_papa:20210902233030p:plain

Cドライブは117GBの容量に対して、空き容量が24.9GBでした。

Win32_LogicalDisk

CimクラスのWin32_LogicalDiskを使うと一発で調べることができます。

 
Get-CimInstance Win32_LogicalDisk

結果 f:id:shinmai_papa:20210902233036p:plain

Sizeが全体の容量、FreeSpaceが空き容量ですね。

単位はバイトです。

バイトだと可読性が悪いのでGBに変換します。

PowerShellでは数字の後にGBとつけると、単位として認識してくれます。

そのため、バイトの値/1GBと書くことでGBに変換することができます。

 
$c=(Get-CimInstance Win32_LogicalDisk)[0]
$c.Size/1GB
$c.FreeSpace/1GB

結果 f:id:shinmai_papa:20210902233042p:plain

エクスプローラーで確認した値とほぼ同じような値が取得できていますね。

(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

結果

f:id:shinmai_papa:20210902233047p:plain

結果は見やすくなりましたが、コマンドは長くなってしまったのであまり意味のない結果に。

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便利!!に落ち着いてしまいました。

というわけで、ここまでお読みいただき、ありがとうございました。