次の方法で共有


サービスの管理

このサンプルは、Windows PowerShell 5.1 にのみ適用されます。

さまざまなサービス タスク用に設計された 8 つの主要な Service コマンドレットがあります。 この記事では、サービスの実行状態の一覧表示と変更についてのみ説明します。 Get-Command *-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

リモート サービスの取得

Windows PowerShell では、Get-Service コマンドレットの ComputerName パラメーターを使用して、リモート コンピューター上のサービスを取得できます。 ComputerName パラメーターは、複数の値とワイルドカード文字を受け入れるため、1 つのコマンドで複数のコンピューターでサービスを取得できます。 たとえば、次のコマンドは、Server01 リモート コンピューター上のサービスを取得します。

Get-Service -ComputerName Server01

PowerShell 6.0 以降、*-Service コマンドレットには ComputerName パラメーターがありません。 PowerShell リモート処理を使用してリモート コンピューターでサービスを引き続き取得できます。 たとえば、次のコマンドは、Server02 リモート コンピューター上のサービスを取得します。

Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }

他の *-Service コマンドレットを使用してサービスを管理することもできます。 PowerShell リモート処理の詳細については、about_Remote に関するページを参照してください。

必須サービスと依存サービスの取得

Get-Service コマンドレットには、サービス管理に非常に役立つ 2 つのパラメーターがあります。 DependentServices パラメーターは、サービスに依存するサービスを取得します。

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

DependentServices パラメーターを使うと、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...

次のコマンドは、依存関係を持つすべてのサービスを取得します。 状態名前RequiredServices、およびサービスの DependentServices プロパティを表示する Format-Table コマンドレット。

Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
  Format-Table -Property Status, Name, RequiredServices, DependentServices -Auto

サービスの停止、開始、中断、再起動

Service コマンドレットはすべて同じ一般的な形式です。 サービスは共通名または表示名で指定でき、リストとワイルドカードを値として受け取ることができます。 印刷スプーラーを停止するには、次のように入力します。

Stop-Service -Name spooler

停止後に印刷スプーラーを起動するには、次のコードを使用します。

Start-Service -Name spooler

印刷スプーラーを中断するには、次の手順に従ってください。

Suspend-Service -Name spooler

Restart-Service コマンドレットは、他の 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>

印刷スプーラーの起動に関する警告メッセージが繰り返し表示されます。 時間がかかるサービス操作を実行すると、PowerShell からタスクの実行が試行中であることが通知されます。

複数のサービスを再起動する場合は、サービスの一覧を取得し、フィルター処理してから、再起動を実行できます。

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 : can't 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 コマンドレットは、ローカル コンピューターまたはリモート コンピューター上のサービスのプロパティを変更します。 サービスの状態はプロパティであるため、このコマンドレットを使用してサービスを開始、停止、および中断できます。 Set-Service コマンドレットには、サービスのスタートアップの種類を変更できる StartupType パラメーターもあります。

Windows Vista 以降のバージョンの Windows で Set-Service を使用するには、[管理者として実行] オプションを使用して PowerShell を開きます。

詳細については、「Set-Service」を参照してください。

こちらもご覧ください