【コードサンプル】24時間タスクのScript例

サービス起動チェックのScript例

dd0440_check_service.ps1

  • dd0440_xxxなので、heartbeat.ps1が直接起動する
  • 毎日04:40に実行する。夜11時に実行したければ、 dd2300_check_service.ps1 とすればいい。
  • 実際の処理を記述したScriptは hh99_check_service.ps1 にある。ファイル名がhh99_xxxとなっているが、dd9999_xxxとかでもいい
#$scriptName = $myInvocation.MyCommand.name
#************************************************************************************
# 定数定義
#************************************************************************************
Set-Variable -Name 'trigCommand' -Value <IFTTTのEventName>
#************************************************************************************
# メイン処理
#************************************************************************************
.\hh99_check_service.ps1 "EpgTImer Service" PC_A

hh99_check_service.ps1

  • 実際の処理を記述したScript
  • 上と同じフォルダに置くことを想定している
  • 実行履歴を history\hh99_check_service_history.txt に出力している
  • hh99_xxxなので、heartbeat.ps1が直接起動することはない
#************************************************************************************
# 変数定義
#************************************************************************************
if ((Get-Variable  -ErrorAction silentlyContinue -Name 'trigCommand' | Measure-Object).count -eq 0){
Set-Variable -Name 'trigCommand' -Value <IFTTTのEventName>
}
Set-Variable -Name 'OutputLog' -Value history\hh99_check_service_history.txt

# 現在時刻の取得
$now = Get-Date -Format G

# 引数の型定義
$sName = [string]
$mName = [string]

#コマンドライン引数(パラメータ)の取得
If ($Args.Length -lt 2){
    echo "Error:引数が足りません"
    exit
}
#コマンドライン引数(パラメータ)の検証
$sName = $Args[0]
echo ("Arg[1]:" + $sName)
$mName = $Args[1]
echo ("Arg[2]:" + $mName)

If ($sName -eq ""){
    echo "Error:サービス名がありません" | Out-FIle $OutputLog -Append
    exit
}
If ($mName -eq ""){
    echo "Error:マシン名がありません" | Out-FIle $OutputLog -Append
    exit
}

$cnt = (Get-Service -ErrorAction SilentlyContinue -Name $sName | Measure-Object).count

if($cnt -eq 0){
# サービスが見つからない
    echo "$now サービスが登録されていません" | Out-FIle $OutputLog -Append
    exit
}

$s = Get-Service -ErrorAction SilentlyContinue -Name $sName

if($s.status -eq "Running" ){
# サービスが実行中です
    echo "$now サービスが実行中です($sName)" | Out-FIle $OutputLog -Append
    exit
}
echo "$now サービスが停止しています($sName)" | Out-FIle $OutputLog -Append
#Start-Service -inputObject $s -Verb runas
#
# IFFFへMAKERイベント発火
.\hh99_IFTTT_trig.ps1 $trigCommand "サービス停止 at $mName$sName)"

echo "$now IFFFへMAKERイベント発火しました" | Out-FIle $OutputLog -Append

関連する記事・ページ

自宅PCをスマホでリモート管理(タスク管理編)
PCをリモート管理する1手法
【コードサンプル】Windowsタスクへの登録例
【コードサンプル】heartbeat.ps1 – 心音確認 PowerShell Script
【コードサンプル】1時間タスクのScript例
【コードサンプル】24時間タスクのScript例
【コードサンプル】hbJob.bat – Windows Bat Script
【コードサンプル】プロセスモニタのScript例
【コードサンプル】IFTTT経由でLINE通知するScript例
【コードサンプル】ネット転送量モニタ