サービスを扱うためのコア コマンドレットは 8 つ存在します。これらを使用して、サービスに関連したさまざまなタスクを実行できます。ここでは、サービスの実行状態の一覧表示と変更についてのみ取り上げていますが、"Get-Help *-Service" でサービスに関連したコマンドレットを一覧表示したり、"Get-Help <Cmdlet-Name>" ("Get-Help New-Service" など) でサービスに関連した各種コマンドレットの情報を検索したりできます。
サービスの取得
Get-Service コマンドレットを使用して、ローカル コンピューターまたはリモート コンピューター上のサービスを取得できます。Get-Process と同様、パラメーターを指定せずに Get-Service コマンドを実行した場合、すべてのサービスが返されます。アスタリスクをワイルドカードとして使用し、サービスを名前でフィルター処理するには、次のように入力します。
PS> Get-Service -Name se* Status Name DisplayName ------ ---- ----------- Running seclogon Secondary Logon Running SENS System Event Notification Stopped ServiceLayer ServiceLayer
サービスの実際の名前がわからなくても、表示名でサービスを検索できます。特定の名前を指定するか、ワイルドカードを使用するか、または表示名を複数使用することによって検索します。
PS> Get-Service -DisplayName se* Status Name DisplayName ------ ---- ----------- Running lanmanserver Server Running SamSs Security Accounts Manager Running seclogon Secondary Logon Stopped ServiceLayer ServiceLayer Running wscsvc Security Center PS> Get-Service -DisplayName ServiceLayer,Server Status Name DisplayName ------ ---- ----------- Running lanmanserver Server Stopped ServiceLayer ServiceLayer
Get-Service コマンドレットの ComputerName パラメーターを使用して、リモート コンピューター上のサービスを取得できます。ComputerName パラメーターには複数の値およびワイルドカード文字を使用できるため、1 つのコマンドで複数のコンピューター上のサービスを取得できます。たとえば、次のコマンドでは、Server01 リモート コンピューター上のサービスを取得できます。
Get-Service -ComputerName Server01
必要なサービスおよび依存するサービスの取得
Get-Service コマンドレットには、サービスの管理のために非常に便利な 2 つのパラメーターがあります。DependentServices パラメーターは、そのサービスに依存するサービスを取得します。RequiredServices パラメーターは、そのサービスが依存しているサービスを取得します。
これらのパラメーターは、Get-Service が返す System.ServiceProcess.ServiceController オブジェクトの DependentServices プロパティと ServicesDependedOn (エイリアス: RequiredServices) プロパティの値を表示するだけですが、コマンドが単純化され、この情報をずっと簡単に取得できるようになります。
次のコマンドは、LanmanWorkstation サービスが必要とするサービスを取得します。
PS> Get-Service -Name LanmanWorkstation -RequiredServices Status Name DisplayName ------ ---- ----------- Running MRxSmb20 SMB 2.0 MiniRedirector Running bowser Bowser Running MRxSmb10 SMB 1.x MiniRedirector Running NSI Network Store Interface Service
次のコマンドは、LanmanWorkstation サービスを必要とするサービスを取得します。
PS> Get-Service -Name LanmanWorkstation -DependentServices Status Name DisplayName ------ ---- ----------- Running SessionEnv Terminal Services Configuration Running Netlogon Netlogon Stopped Browser Computer Browser Running BITS Background Intelligent Transfer Ser...
また、依存関係を持つサービスをすべて取得することもできます。次のコマンドは、それを実行した後、Format-Table コマンドレットを使用して、コンピューター上のサービスの Status、Name、RequiredServices、DependentServices の各プロパティを表示します。
Get-Service -Name * | where {$_.RequiredServices -or $_.DependentServices} | Format-Table -Property Status, Name, RequiredServices, DependentServices -auto
サービスの停止、開始、一時停止、および再開
サービスを扱うすべてのコマンドレットは、同じ形式で指定できます。サービスを一般的な名前 (表示名) で指定できるほか、複数の表示名を指定したり、ワイルドカードを値として使用したりすることもできます。印刷スプーラーを停止するには、次のように入力します。
Stop-Service -Name spooler
停止した印刷スプーラーを開始するには、次のように入力します。
Start-Service -Name spooler
印刷スプーラーを一時停止するには、次のように入力します。
Suspend-Service -Name spooler
Restart-Service コマンドレットの動作も、サービスを扱う他のコマンドレットと同じですが、もう少し複雑な例を示します。最も簡単な使い方は、サービスの名前を指定することです。
PS> Restart-Service -Name spooler WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting... WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting... PS>
印刷スプーラーの起動に関して、警告メッセージが繰り返し出力されていることがわかります。ある程度時間のかかるサービス操作を実行すると、タスクの実行を試みている最中であることを示すメッセージが表示されます。
複数のサービスを再開する場合は、サービスの一覧を取得してからフィルターを適用し、その上でサービスを再開するようにします。
PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping... WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping... Restart-Service : Cannot stop service 'Logical Disk Manager (dmserver)' because it has dependent services. It can only be stopped if the Force flag is set. At line:1 char:57 + Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<< WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting... WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
サービスを扱うこれらのコマンドレットには ComputerName パラメーターはありませんが、Invoke-Command コマンドレットを使用することにより、これらのコマンドレットをリモート コンピューター上で実行できます。たとえば、次のコマンドでは、Server01 リモート コンピューター上のスプーラー サービスを再起動できます。
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
サービスのプロパティの設定
Set-Service コマンドレットは、ローカル コンピューターまたはリモート コンピューター上のサービスのプロパティを変更します。サービスの状態もプロパティの 1 つであるため、このコマンドレットを使用してサービスを開始、停止、および一時停止できます。Set-Service コマンドレットには、サービスのスタートアップの種類を変更できる StartupType パラメーターもあります。
Windows Vista 以降のバージョンの Windows で、Set-Service を使用するには、Windows PowerShell を開く際に [管理者として実行] を指定する必要があります。
詳細については、「Set-Service」を参照してください。
関連項目