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

コメントを投稿

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

Windows 11 Pro 24H2からSambaのguest ok = yesな共有フォルダーへアクセスする

Microsoft Windows 11 Proを動かしているマシンで、sambaでguest ok = yesにしている共有フォルダーにアクセスしていた。 Windows 11を24H2にアップデートしたところ、その共有フォルダーを開こうとすると、ログインを求められ、...