Windowsでは、システムやアプリケーションの運用に不可欠な多くのサービスがバックグラウンドで実行されています。これらのサービスの状態を確認することは、システム管理やトラブルシューティングにおいて重要です。GUIを使用する方法もありますが、コマンドプロンプトから直接サービスのステータスを確認することで、より迅速に情報を得ることができます。本記事では、Windowsのコマンドプロンプトを使用してサービスのステータスを確認する方法について詳しく解説します。
1つのサービスの現在状態はsc.exe query サービス名、停止中も含む一覧はsc.exe query type= service state= allで確認します。Windows PowerShell 5.1ではscがSet-Contentの別名になるため、シェルをまたいで使う例はsc.exeと明記します。確認だけならサービスの起動・停止は不要です。
サービスのステータスを確認するコマンド
Windowsのコマンドプロンプトからサービスのステータスを確認するには、scコマンドやnet startコマンドを使用します。これらのコマンドは、Windowsに内蔵されているコマンドラインツールで、サービスの管理に使用されます。
sc.exeコマンドを使用する方法
scコマンドは、サービスの構成やステータスを表示、変更するために使用されます。サービスのステータスを確認する基本的なコマンドは以下の通りです。
sc.exe query [サービス名]サービス名は、サービスの実際の名前を指定します。例えば、Windows Updateサービスのステータスを確認するには、以下のコマンドを使用します。
sc.exe query wuauservこのコマンドを実行すると、サービス名、状態(例: RUNNING、STOPPED)、サービス固有のエラーコードなど、サービスの詳細が表示されます。
net startコマンドを使用する方法
net startコマンドは、現在実行中のサービスのリストを表示するために使用されます。特定のサービスのステータスを直接確認するのではなく、実行中のすべてのサービスを一覧表示します。
net startこのコマンドを実行すると、システムで現在実行中のすべてのサービスの名前が一覧で表示されます。特定のサービスがリストに含まれていれば、そのサービスは実行中です。一覧にない場合も、サービス名の取り違えや照会対象を確認し、sc.exe queryで個別に調べてください。引数付きのnet start サービス名は一覧表示ではなく起動操作です。
これらのコマンドを利用することで、Windowsのサービス管理をコマンドラインから効率的に行うことが可能になります。
停止中を含む一覧・PID・起動設定を調べる
sc.exe query type= service state= all
sc.exe queryex Spooler
sc.exe qc Spooler
type=とstate=の直後には空白が必要です。単にsc.exe queryでは既定でactive側の一覧になるため、停止したサービスを探す目的ではstate= allを付けます。列挙バッファ不足や再開位置が表示された場合は、その案内に従いbufsize=やri=を指定して残りを取得します。途中までの一覧を全件と判断しません。
queryexはPIDなどを追加表示し、qcは起動の種類・実行ファイル・サービスアカウントなどの構成を確認します。RUNNING/STOPPEDは現在状態、AUTO_START/DEMAND_START/DISABLEDは起動設定で別物です。サービスの停止は必ずしも異常ではなく、必要時やトリガーで起動するものもあります。PIDが他のサービスと共有されていることもあるので、PIDを見つけただけでtaskkillしないでください。
表示名とサービス名を取り違えない
sc.exe getkeyname "Print Spooler"
sc.exe getdisplayname Spooler
上は英語表示名の例です。実際の表示名はOS言語で異なるため、services.mscのプロパティでサービス名を確認して指定します。1060は指定サービスが見つからない場合の手がかりであり、「停止中」と同じ意味ではありません。エラー5のアクセス拒否では必要な照会権限を確認し、サービスACLを広げて回避しません。
STATEの読み方と「正常」の判断
主な状態は1 STOPPED(停止)、2 START_PENDING(開始処理中)、3 STOP_PENDING(停止処理中)、4 RUNNING(実行中)、5 CONTINUE_PENDING(再開処理中)、6 PAUSE_PENDING(一時停止処理中)、7 PAUSED(一時停止)です。PENDING中は完了まで待ち、CHECKPOINTやWAIT_HINT、イベントログと合わせて進行を確認します。
RUNNINGはサービス管理上の状態であり、アプリの応答、通信、印刷、更新などの業務処理の成功を保証しません。WIN32_EXIT_CODEやSERVICE_EXIT_CODE、発生時刻のイベント、対象アプリの症状も記録します。照会コマンドの終了コード0も、サービスが稼働中という意味ではありません。
よく使うサービスのステータス確認コマンド
Windowsで運用管理やトラブルシューティングを行う際、特定のサービスの状態を頻繁に確認する必要がある場合があります。以下は、よく使うサービスのステータスを確認するためのコマンド例です。
Windows Updateサービス(wuauserv)
Windows Updateサービスは、Windowsの更新プログラムを管理します。このサービスのステータスを確認するには、以下のコマンドを使用します。
sc.exe query wuauservリモートデスクトップサービス(TermService)
対象PCがリモートデスクトップ接続を受け入れる側のサービスです。クライアントから別PCへ接続することだけを意味するサービスではありません。このサービスの状態を確認するには、次のコマンドを実行します。
sc.exe query TermServiceプリントスプーラーサービス(Spooler)
プリントスプーラーサービスは、印刷ジョブを管理し、プリンターへの送信を行います。このサービスを確認するには、以下のコマンドを使います。
sc.exe query SpoolerDHCPクライアントサービス(Dhcp)
DHCPクライアントサービスは、このPCがDHCPによるIPアドレス構成を取得・更新する役割です。ほかのPCへアドレスを配るDHCPサーバーとは異なります。このサービスのステータスを確認するコマンドは以下の通りです。
sc.exe query DhcpWindowsファイアウォールサービス(MpsSvc)
Windowsファイアウォールは、不正なアクセスからコンピュータを保護するためのサービスです。このサービスの状態をチェックするには、次のように入力します。
sc.exe query MpsSvcこれらのコマンドを使うことで、特定のサービスが現在実行中か、停止しているかを簡単に確認できます。サービスの状態に応じて、適切な対応や設定変更を行うことが可能になります。
サービスの起動・停止コマンド

以下は状態確認ではなく変更操作です。管理権限、依存関係、利用者への影響を確認し、承認された対象にだけ実行します。[サービス名]は説明用の置換箇所で、角括弧を含めて入力しません。遠隔作業中にTermServiceやネットワーク関連サービスを止めると接続を失う可能性があります。
サービスを起動するコマンド
サービスを起動するには、net startコマンドまたはsc.exe startコマンドを使用します。サービス名を指定して、特定のサービスを開始することができます。
net start [サービス名]または
sc.exe start [サービス名]例えば、リモートデスクトップサービスを起動する場合は以下のようになります。
net start TermServiceまたは
sc.exe start TermServiceサービスを停止するコマンド
サービスを停止する場合には、net stopコマンドまたはsc.exe stopコマンドを用います。サービス名を指定して、特定のサービスを停止させることが可能です。
net stop [サービス名]または
sc.exe stop [サービス名]例として、プリントスプーラーサービスを停止するには、以下のコマンドを使用します。
net stop Spoolerまたは
sc.exe stop Spoolerサービスの再起動コマンド
サービスを再起動する必要がある場合は、サービスを停止してから再び起動するコマンドを順番に実行します。これは、設定の変更を適用したり、問題を解決するためにしばしば必要です。
net stop [サービス名] && net start [サービス名]または
sc.exe stop [サービス名]
sc.exe query [サービス名]
REM STOPPEDを確認してから、別操作として開始する
sc.exe start [サービス名]sc.exe stopの成功は停止要求が受理された段階の場合があります。STOP_PENDINGの間にstartを連結しても、停止完了を待つ保証はありません。STOPPEDを確認してから開始し、その後RUNNINGと実際の機能を確認します。依存サービスがある場合は勝手に一括停止せず、管理者が復旧順序も確認してください。
コマンドプロンプトを使ったトラブルシューティングの例
Windowsの運用中に遭遇する可能性のある一般的なトラブルシューティングのシナリオと、それを解決するためにコマンドプロンプトをどのように活用できるかについて説明します。
プリンターが動作しない場合のトラブルシューティング
Windowsでプリンターが期待通りに動作しない場合、プリントスプーラーサービスの状態を確認し、必要に応じて再起動することで問題が解決することがあります。
- プリントスプーラーサービスのステータスを確認:
sc.exe query Spoolerステータスが「RUNNING」でない場合は、サービスが停止している可能性があります。 - プリントスプーラーサービスを再起動:
net stop Spooler && net start Spooler
このコマンドは、プリントスプーラーサービスを停止してから再び起動します。これにより、プリンター関連の一時的な問題が解決することがあります。
インターネット接続の問題を解決する
インターネット接続に問題がある場合、DHCPクライアントサービスの状態をチェックし、再起動してIPアドレスの再割り当てを試みることが有効です。
- DHCPクライアントサービスのステータスを確認:
sc.exe query Dhcpサービスが停止している場合は、正常にIPアドレスが割り当てられていない可能性があります。 - DHCPクライアントサービスを再起動:
net stop Dhcp && net start Dhcp
この操作により、システムはDHCPサーバーから新しいIPアドレスを取得し、接続問題が解決することがあります。
まとめ
コマンドプロンプトを使用してWindowsサービスの管理を行うことは、システム管理者や高度なユーザーにとって非常に強力なスキルです。サービスのステータスの確認、起動、停止、および再起動の方法を理解することで、多くの一般的な問題を迅速に解決できます。本記事で紹介したコマンドは、Windowsの運用とトラブルシューティングの基礎として役立ちます。効率的なシステム管理を実現するために、これらのコマンドを活用してください。
リモート照会とPowerShellでの確認
sc.exe \\SERVER01 query Spooler
承認された対象サーバーへの照会例です。接続先、サービス照会権限、RPCなど必要な通信が条件になります。アクセスできないからといってファイアウォールを全面停止したり、管理者資格情報をスクリプトへ埋め込んだりしません。
Get-Service -Name Spooler | Select-Object Name, DisplayName, Status
PowerShellで状態をオブジェクトとして扱う例です。自動判定ではsc.exeの表示文字列をfindstrで検索して、見つからなければ停止と決めつける方式を避けます。照会失敗・未登録・停止・起動途中を区別してください。ここに示したコマンドはWindows実機で実行検証していません。
公式資料
Microsoft:sc.exe query / サービス管理に使うSC / Windows PowerShell 5.1のSet-Contentと別名


コメント