ディスク容量チェック

VBScriptが非推奨となったので、コマンドプロンプトからpowershellを使って
ディスク容量を出力する方法をメモする。

powershell "Get-WmiObject Win32_LogicalDisk -ComputerName %computername%  -Filter DriveType=3 | Select-Object DeviceID,@{'Name'='全容量 (GB)'; 'Expression'={[string]::Format('{0:N1}',[math]::truncate($_.size / 1GB *10)/10)}},@{'Name'='空き容量 (GB)'; 'Expression'={[string]::Format('{0:N1}',[math]::truncate($_.freespace / 1GB*10 )/10)}},@{'Name'='残り (%)'; 'Expression'={[string]::Format('{0:N1}',[math]::truncate($_.freespace /$_.size *1000)/10)}}"

出力サンプル

DeviceID 全容量 (GB) 空き容量 (GB) 残り (%)
-------- ----------- ------------- ---------
C:       930.7       537.5         57.7
D:       1,862.9     607.0         32.5

たとえば、smailを使って下記のようにとばす

rem DATDIR にディスク容量を出力する
SET DATDIR=D:\log
powershell "Get-WmiObject Win32_LogicalDisk -ComputerName %computername%  -Filter DriveType=3 | Select-Object DeviceID,@{'Name'='全容量 (GB)'; 'Expression'={[string]::Format('{0:N1}',[math]::truncate($_.size / 1GB *10)/10)}},@{'Name'='空き容量 (GB)'; 'Expression'={[string]::Format('{0:N1}',[math]::truncate($_.freespace / 1GB*10 )/10)}},@{'Name'='残り (%)'; 'Expression'={[string]::Format('{0:N1}',[math]::truncate($_.freespace /$_.size *1000)/10)}}"  >%DATDIR%\disk.txt

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET LF=\n


SET /P str=<%DATDIR%\disk.txt
FOR /F "skip=1 delims=" %%a in (%DATDIR%\disk.txt) do (
    SET str=!str!!LF!%%a
)
ECHO !str!

SET FFROM=%COMPUTERNAME%
SET ADDR=hoge@hoge.com

rem d:\smail にsmailを配置して
D:\smail\smail -h(smtpサーバ) -fuser -f"%FFROM%<%FFROM%@hoge.com>" -s"%FFROM% DISK Usage " -T"\n %str%  \n" %ADDR% -t

パフォーマンスモニタとタスクスケジューラを組み合わせる。

「新しいトリガー」は1回で設定

パフォーマンスモニター