LoginSignup
2
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-24
  • 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

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6