ディスク容量が減ってきたらメールで警告するには

ユーザがどんな使い方するかわからないので、ディスクを圧迫してきたらメールで自動警告したい。
昔はタスクスケジューラで仕掛けられたらしいのですが、今は「推奨されない」としてできなくなっています。
ではどうやろうか…と悩んでPowerShellで組んだスクリプトをスケジューラ登録すればいいことに気づきました。

では、具体的な方法

メールを送るスクリプトをPowerShellで作る

ディスクの残容量をチェックし、メールを送るスクリプトを作る 以下を作成し、スクリプトファイルに保存します。

$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ファイル]

ただし、タスクスケジューラは全てフルパスで書きましょう。カレントディレクトリに書き込みとか、トラブルの元です。

各設定項目

PowerShellスクリプトファイルをタスクスケジューラに設定する項目 
設定項目名 内容
プログラム/スクリプト %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加 -Command “[保存したスクリプトファイル.ps1]
フルパス推奨
開始 <このスクリプトが実行されるときのカレントフォルダー名>
なしでいいと思います。

これを設定してやり、一日一回起動。

できたヽ(^。^)ノ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください