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

コメントを投稿

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

pkgsrc/mail/dkimproxyを使ってみたが、受信時の動作は、現在の用途には合わないようだった

とある過去に利用者のいたドメインを所有しているのだが、相当に雑な運用だったようで、いまだにSPAM以外の電子メールが来るし、 そのドメインの存在しないアカウントを装った電子メールが多く送信されているようだった。 しばらく、キャッチオール設定をして受信してみて気付いた...