1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

システム上の停止可能な全サービスを取得するPowershell

2022-02-05 07:31:02

PS3.0以降の場合。

Get-Service は、コンピュータにインストールされているすべてのサービスを表示します。ただし、実行中または停止中のみのサービスを取得するためのパラメータはありません。

シンプルなWhere-Objectステートメントと組み合わせることで、問題を解決することができます。通常、このようなコードになります。

コピーコード コードは以下の通りです。

PS> Get-Service | Where-Object Status -eq Running

基本的に、Where-Objectはオブジェクトの任意のプロパティを取得し、必要な条件を選択することができます。
もし、停止できるすべてのサービスを取得するつもりなら、上記のコードはそれを行うことはできません。一部のサービスは実行されているが、停止することができないかもしれません。これは、修正することで可能です。以下は、停止可能なサービスのリストを生成するものです。
コピーコード コードは以下の通りです。

PS> Get-Service | Where-Object CanStop 

ここでは実際に簡略化されており、"CanStop"はブール値(真または偽)なので、その後に式を続ける必要はなくなりました。
そこで、停止できないサービスを逆に取得する場合は、以下のような形式になります。
コピーコード コードは以下の通りです。

PS> Get-Service | Where-Object CanStop -eq $false

もちろん、次のような形式で組み合わせて使うこともできます。
コピーコード コードは以下の通りです。

PS> Get-Service | Where-Object { ! $_.CanStop -and $_.Status -eq 'Running' }