さて、サービスの監視。前に紹介したような気もしますが、出していないようなので。
サーバー監視において、PowerShellで、サービスの状態を監視したい時ってあります。
その場合のコードサンプルを。
方法1. Whileループを使う
正直、無いですね。
まぁ一応紹介します。
$svc = Get-Service -Name Server
while($svc.State -ne 'Stopped')
{
Start-Sleep -Seconds 1
}
#続きをここに!
Get-Serviceで、サービスを取得し、.Stateプロパティの状態をwhile監視ですね。
実に面白くないです。
方法2. WaitForStatusメソッドを利用する
せっかく専用メソッドあるので使えばいいのです。
MSDN - ServiceController.WaitForStatus メソッド
簡単です、書いてみましょう。
$svc = Get-Service -Name Server
$svc.WaitForStatus('Stopped')
#続きをここに!
このメソッドは、timeoutも第二引数に設定可能です。
timeoutを指定しないと、サービスが指定したステータスになるまで、無期限に待機します。
$svc = Get-Service -Name Server
$svc.WaitForStatus('Stopped',10) #10秒待って応答なければタイムアウトを返す。
#続きをここに!
サービス監視は、サーバー監視の基本ですね。