Windowsサービスをコマンドで制御する方法

Windowsサービスをコマンドで制御する方法

Windows環境では、さまざまなプログラムがバックグラウンドで「サービス」として動作しており、サービスの起動や終了、サービスの状態を確認するためのコマンドが用意されています。

そこでここではWindows 10を例に、WindowsコマンドやPowerShellを使ってWindowsサービスの起動や終了、サービスの設定変更などを行う方法を紹介します。

scコマンドを使った方法

Windowsコマンドでサービスを制御するときは、scコマンドを使った方法が一般的です。

サービス情報の取得

scコマンドにはサービスを管理するためのサブコマンドがたくさんあり、現在実行中のサービスの名前などを一覧で確認するときは、以下のようにコマンドを実行します。

> sc query

Windowsサービスをコマンドで制御する方法

停止中のサービスを含めて一覧表示したいときは、以下のようにコマンドを実行します。

> sc query state= all

特定のサービスの情報だけを取得したいときは、サービス名を指定することで、指定したサービスの情報だけを確認できます。

> sc query <サービス名(SERVICE_NAME)>

たとえば、Windows Updateサービスの情報を確認したいときは、以下のようにコマンドを実行します。

> sc query wuauserv

Windowsサービスをコマンドで制御する方法

サービスの起動/停止

特定のサービスを起動するときは、以下のようにコマンドを実行します。

> sc start <サービス名(SERVICE_NAME)>

特定のサービスを停止するときは、以下のようにコマンドを実行します。

> sc stop <サービス名(SERVICE_NAME)>

サービスの一時停止/再開

実行中の特定のサービスを一時停止するときは、以下のようにコマンドを実行します。

> sc pause <サービス名(SERVICE_NAME)>

一時停止中の特定のサービスを再開するときは、以下のようにコマンドを実行します。

> sc continue <サービス名(SERVICE_NAME)>

サービス設定の変更

特定のサービスのスタートアップの種類を変更するときは、以下のようにコマンドを実行します。

たとえば、スタートアップの種類を自動に設定したいときは、以下のようにコマンドを実行します。

> sc config <サービス名(SERVICE_NAME)> start= auto

スタートアップの種類としては「auto(自動)」以外に「demand(手動)」「disabled(無効)」「delayed-auto(遅延自動起動)」などを指定できます。

なお、scコマンドは、ここで紹介した以外にも、登録されている特定のサービスを削除したり、新しいサービスを登録するといったこともできます。

PowerShellコマンドレットを使った方法

サービス情報の取得

PowerShellコマンドレットでサービスの状態・名前・表示名を一覧で確認するときは「Get-Service」コマンドレットを実行します。

PS> Get-Service

Windowsサービスをコマンドで制御する方法

サービスによっては出力が長くて省略されていたりする場合は「Format-Table」コマンドを併用することで、省略されずに表示できます。

PS> Get-Service | Format-Table -AutoSize

Windowsサービスをコマンドで制御する方法

特定のサービスについての情報を取得するときは「-Name」オプションを利用します。

PS> Get-Service -Name <サービス名> | Format-Table -AutoSize

サービスの起動/停止

特定のサービスを起動するときは「Start-Service」コマンドレットを実行します。

PS> Start-Service -Name <サービス名>

特定のサービスを停止するときは「Stop-Service」コマンドレットを実行します。

PS> Stop-Service -Name <サービス名>

特定のサービスを再起動するときは「Restart-Service」コマンドレットを実行します。

PS> Restart-Service -Name <サービス名>

上のコマンドレットでは、サービスを指定するのに「-Name」オプションを利用してサービス名を指定していますが「-DisplayName」オプションを利用して、サービス表示名で指定することもできます。

サービスの一時停止/再開

実行中の特定のサービスを一時停止するときは「Suspend-Service」コマンドレットを実行します。

PS> Suspend-Servie -Name <サービス名>

一時停止中の特定のサービスを再開するときは「Resume-Service」コマンドレットを実行します。

PS> Resume-Service -Name <サービス名>

サービス設定の変更

特定のサービスのスタートアップの種類や状態を設定するときは「Set-Service」コマンドレットを利用します。

スタートアップの種類を指定するときは「-StartupType」オプションを利用し、指定できる値は「Automatic」「Manual」「Disabled」です。

PowerShellバージョン6以降では「AutomaticDelayedStart(遅延開始)」も指定できます。

PS> Set-Service -Name <サービス名> -StartupType Manual

「Set-Service」コマンドレットでは「-Status」オプションでサービスの状態を指定することもできます。

状態として指定できる値は「Running」「Stopped」「Paused」です。

PS> Set-Service -Name <サービス名> -Status Stopped