ディスク容量が減ってきたらメールで警告するには
ユーザがどんな使い方するかわからないので、ディスクを圧迫してきたらメールで自動警告したい。
昔はタスクスケジューラで仕掛けられたらしいのですが、今は「推奨されない」としてできなくなっています。
ではどうやろうか…と悩んでPowerShellで組んだスクリプトをスケジューラ登録すればいいことに気づきました。
では、具体的な方法
メールを送るスクリプトをPowerShellで作る
ディスクの残容量をチェックし、メールを送るスクリプトを作る 以下を作成し、スクリプトファイルに保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$hostname =HOSTNAME $monitor =0.7 $report = $monitor * 100 $Drive = (Get-PSDrive C) If (($Drive.Used / ($Drive.Used + $Drive.Free)) -lt $monitor){ $mail= "user@example.com" $pwd ="user@example.com" $credential = New-Object System.Management.Automation.PSCredential $mail,$pwd Send-MailMessage -To $mail ` -From $mail ` -SmtpServer "smtp.example.com" ` -Subject "$hostname disk alert" ` -Credential $credential ` -Body "Server:$hostname ディスク容量がしきい値を超えて使われています。 Disk free space less than $report % これは自動送信メールです。 "` -Encoding UTF8 `} |
警告メールなので、自分から自分へのアドレスでいいでしょう。
-Encodingタグを使えば日本語も使えるようです。
スクリプトをタスクスケジューラに登録する
次にこれをタスクスケジューラに登録します。以下の形式で呼び出せばいい。
PowerShell.exe -Command [保存した.ps1ファイル]
ただし、タスクスケジューラは全てフルパスで書きましょう。カレントディレクトリに書き込みとか、トラブルの元です。
各設定項目
設定項目名 | 内容 |
---|---|
プログラム/スクリプト | %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe |
引数の追加 | -Command “[保存したスクリプトファイル.ps1]” フルパス推奨 |
開始 | <このスクリプトが実行されるときのカレントフォルダー名> なしでいいと思います。 |
これを設定してやり、一日一回起動。
できたヽ(^。^)ノ