このサンプルは、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」を参照してください。
こちらもご覧ください
PowerShell