Windowsサービスは、services.mscスナップインやsc.exeコマンドラインツールからだけでなく、PowerShellを使用しても管理することができます。 この記事では、PowerShellでWindowsサービスを管理するさまざまなシナリオを考えていきます。
PowerShell Cmdlets Used to Manage Windows Services
Windowsサービスの状態を表示し管理するための、8つの基本Service cmdletsが存在します。 サービス管理コマンドレットの全リストを取得するには、このコマンドを実行します。
Get-Help \*-Service
- Get-Service – ローカルまたはリモート コンピューター上の実行または停止状態の両方のサービスを取得することができます。 このコマンドレットは、レジストリおよびサービス データベースに Windows サービスの新しいエントリを作成します。 このコマンドレットは、Windows サービス コントローラーを介して再起動メッセージを送信します。
- Resume-Service – サービスを再開します。
- Set-Service – ローカルまたはリモート サービスの状態、説明、表示名、または起動モードなどの設定を変更します。
- Start-Service – サービスを開始します;
- Stop-Service – サービスを停止します (コマンドレットは Windows サービス マネージャーに停止メッセージを送信します);
- Suspend-Service – サービスを一時停止します。
Get-Help を使用して、特定のコマンドレットの使用に関する詳細な説明と例を得ることができます:
Get-Help Start-Service
How to Check Windows Service Status with Get-Service?
Get-Service コマンドレットを使用して、ローカルまたはリモート コンピューター上のサービスのリストとその状態 (Running/Stopped) を取得することができます。 Nameパラメータを使用すると、名前によってサービスを選択することができます。 サービス名は、ワイルドカード文字 *
.
を使用して指定できます。正確なサービス名がわからない場合、-DisplayName パラメータを使用して表示名で検索することが可能です。 値のリストとワイルドカードを使用できます。
リモート コンピューター上のサービス状態を取得するには、-ComputerNameパラメーターで Get-Service cmdlet を使用します。 カンマで区切って名前を指定することで、一度に複数のリモート コンピュータのサービス状態を照会することができます。 例えば、以下に示すコマンドは、リモート コンピューター ny-prnt1 と ny-prnt2 の Spooler サービスの状態を取得します。
Get-Service spooler –ComputerName ny-prnt1,ny-prnt2
Status Name DisplayName------ ---- -----------Running spooler Print SpoolerStopped spooler Print Spooler
サービスのすべてのプロパティを表示するには、Select-Object コマンドレットを使用します。 たとえば、Spooler サービスの名前、ステータス、および利用可能なオプションを表示したいとします。
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
Get-Service コマンドレットは、サービスの依存関係を表示できる 2 つのパラメーターを備えています。
- -DependentServices は、与えられたサービスに依存しているサービスを表示できます
- -RequiredServices は、与えられたサービスが依存しているサービスを表示します
次のコマンドは、Spooler サービスを起動するために必要なサービスを表示します。
Get-Service –Name Spooler -RequiredServices
次のコマンドは、Spoolerに依存しているサービスを表示します:
Get-Service –Name Spooler -DependentServices
。