【Powershell】(サーバ保守)タスクスケジューラの特定のタスクの状態を確認する(Get-ScheduledTask)

【ツールの概要】
Powershellで、Windowsタスクスケジューラの特定タスクの、「状態」を確認するスクリプトです。

【環境(使っている環境)】
Windows Server2016
Powershell ver5.1

【ソース(pingcheck.ps1)】

 # ログFunction
 function logwrite($MSG, $INFO, $outputfile) {
    $NOW = Get-Date -Format G
    Write-Output "[ $NOW ][ $MSG ] $INFO" | Out-File -Append $outputfile -encoding Default
}


# メールFunction事前読込(別にここじゃなくても可)
.('D:\bin\SendmailbyPS.ps1')


# プロセスメイン
$TaskName = '~~~~'; ←タスクの名前を入れる
$logfile = 'D:\log\TaskCheck_' + (Get-Date -Format "yyyyMMdd") + '.log';
$mailcfgpath = "D:\etc\mailcfg.xml"
logwrite "INF" "Check Start" $logfile


# タスクの状態を取得
$State = (Get-ScheduledTask -TaskName $TaskName).State


# タスクの状態で条件分岐(Running以外だったらログ書いてメールを送る、失敗したらログ書き込みのみ、Runningだったらログ書き込みのみ)
if ($State -ne "Running") {
    try {
        # Mail sending.
        logwrite "INF" "Task is not Running : $($State)" $logfile

        # メール送信部分
        $NOW = Get-Date -Format G
        $Subject = "[Warning] Server [" + (hostname) + "]'s Task [$($TaskName)] is not Running."
        $Body = "Task [$($TaskName)] is not Runnning : State is $($State). $($NOW)"
        $To = "メールアドレス@sample.jp"
        $Cc = "メールアドレス@sample.jp"
        SendmailbyPS $To $Cc $Subject $Body $mailcfgpath

        logwrite "INF" "Sending Mail Finished : $($TaskName)" $logfile
    }
    catch {
        logwrite "ERR" "Error. SendMailFunction Failed. TaskName : $($TaskName)" $logfile
        $errstring = $error[0] | Out-String
        logwrite "ERR" "$errstring" $logfile
    }
}
else {
    logwrite "INF" "The Task is $($State)" $logfile
}


logwrite "INF" "Check Finished" $logfile


【使用方法】
・上記のスクリプトの$TaskName に、確認対象のタスクの名前を代入するよう記述します。
・メール送信スクリプト(SendmailbyPS.ps1)とその設定ファイル(mailcfg.xml)を引数に注意しながら作ります。
powershellで実行します。

【説明】
・Get-ScheduledTaskコマンドで、Statusを直で取れます。実行中はRunningですね。他は以下の通り。

Running 実行中
Ready 準備完了
Disabled 無効


【総評】
ズバリのタスク名がわかっている場合、非常に簡単に状態などが取れます。
他の設定値がとりたい場合などは参考サイトを参照ください!

【参考サイト】
Get-ScheduledTask (ScheduledTasks) | Microsoft Docs
PowerShell で スケジューラタスク(SchedulerTask) を操作する - tech.guitarrapc.cóm