WindowsのサービスをPowerShellで再起動させる

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 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...