#### 関数定義
<# サービス状態確認関数
サーバー起動後に自動起動のサービスが上がっているか確認するための関数
チェック間隔(秒)ごとにサービスの状態を取得し、期待値を取得した場合に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