tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

PowerShellでサービスの監視を行う

さて、サービスの監視。前に紹介したような気もしますが、出していないようなので。 サーバー監視において、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秒待って応答なければタイムアウトを返す。

#続きをここに!
サービス監視は、サーバー監視の基本ですね。