PowerShell

Powershell サービスの実行状態を確認する関数

  • Service_Status_Check_Loop.ps1
#### 関数定義

<# サービス状態確認関数

    サーバー起動後に自動起動のサービスが上がっているか確認するための関数

    チェック間隔(秒)ごとにサービスの状態を取得し、期待値を取得した場合に0を返す。
    チェック回数の上限になっても期待値が取得できない場合、1を返す。

      第一引数:サービス名
      第二引数:期待値(Running/Stopped)
      第三引数:チェック間隔(秒)
      第四引数:チェック回数の上限

#>

function Service_Status_Check_Loop ($SERVICE_NAME,$HEALTH,$Span,$Upto) {

# カウント用変数初期化
$cnt = 0

    # 無限ループ
    while ($true) {

      # チェック回数カウントアップ
      $cnt++

      # サービス状態取得
      $SERVICE_STATUS = Get-Service |?{$_.name -match $SERVICE_NAME}|%{$_.Status}

      # サービス状態判定
      switch ($SERVICE_STATUS) {
        "$HEALTH" {return 0}  # 期待値だった場合に0を返す
        default   {if ($cnt -eq $Upto){return 1}} # チェック回数の上限に達した場合、1を返す
      }

      # 期待値でなく、チェック回数の上限に達していない場合は、指定間隔(秒)待機
      sleep $Span

      # 無限ループに戻る

    }

}


#### 処理開始

# サービス名
$SERVICE_NAME_01="WinRM"

# 期待値(Running/Stopped)
$HEALTH_01 = "Running"

# チェック間隔(秒)
$Span_01 = 3

# チェック回数の上限
$Upto_01 = 10

# サービス状態確認関数の実行
$LAST_CODE = Service_Status_Check_Loop $SERVICE_NAME_01 $HEALTH_01 $Span_01 $Upto_01 

# 終了
exit $LAST_CODE