Windows Server 2012 R2 x86_64上に、定期的に再起動しないと動作がおかしくなるサービスがあって、タスクスケジューラーで夜中に再起動したい。
PowerShellのRestart-Service
で比較的容易にできるようだったので、スクリプトを作成し、タスクスケジューラーに設定した。
サービスのNameを取得する
Restart-Service
にはNameかDisplayNameを指定してサービスを再起動できるのだが、Nameを利用する方が良さそうな気がする、
今回再起動したいサービスでは該当しないが、DisplayNameには日本語が含まれている場合もあるし、ホワイトスペースが含まれている場合もあり、
いつか困ることになりそうな気がする。
Get-Service
を使うとNameとDisplayNameを表示できるのだが、長いNameは最後が省略されてしまい、Restart-Service
に
厳密に指定できない。Restart-Service
ではワイルドカードも利用できるのだが、今回はサービスの再起動の順序はあらかじめ決めてあるし、
Get-Service
で表示が省略されるからといってワイルドカードを利用するのは良くない。
以下のようにすると、長いNameも省略されずに一覧できる。
> Get-Service | Sort-Object | Format-List -Property Name
これで、目当てのサービスのNameが、ServiceName
だと分かった場合には、以下のように実行すれば、サービスが再起動される。
スクリプト中に複数行で複数の再起動指示を記載しておくと、1つのサービスが再起動されるまで次の再起動の実行開始はブロックされる。
> Restart-Service -Name 'ServiceName'
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。