PowerShell またはコマンドラインですべての Windows サービスを表示する方法
Windowsマシンの裏で何が動いているのか、延々と続くメニューをクリックせずに確認したい時があります。トラブルシューティングやシステムの健全性管理をする際に、バックグラウンドサービスを素早く一覧表示する方法を知っていれば、本当に助かります。タスクマネージャーも確かに便利ですが、詳細をすぐに確認したい場合や、複数のPCで自動チェックを行いたい場合は、表示が遅くなります。
コマンドプロンプトやPowerShellなどのコマンドラインツールを使うと、作業を大幅にスピードアップできます。サービスの状態を確認したり、不要な情報をフィルタリングしたり、サービスを直接管理したりできるので、かなり便利です。ただし、これらのコマンドは、特にスクリプトやコマンドレットに慣れていない場合、最初は少し扱いにくかったり、混乱したりするかもしれません。しかし、少し練習すれば、何が実行されていて何が実行されていないかを、簡単にリアルタイムでスナップショットとして取得できるようになります。
コマンドプロンプトでWindowsサービスを一覧表示する方法
コマンドプロンプトはPowerShellほど洗練されたモダンなツールではありませんが、それでもすぐに情報が欲しいときには役立ちます。そんな時に頼りになるのがqueryexコマンドです。シンプルながらも効果的で、サービスがアクティブか無効かなど、サービスの詳細を表示してくれます。まずはここから始めましょう。
ステップ1: 管理者としてコマンドプロンプトを実行する
スタートメニューを開き、「cmd」を検索して右クリックし、「管理者として実行」を選択します。一部のサービスへの問い合わせやプロセスの停止には、管理者権限が必要になることが多いため、これは必須です。起動すると、すぐに使えるコマンドラインが表示されます。
ステップ2: すべてのWindowsサービスを一覧表示する
次のコマンドを入力して Enter キーを押します。
sc queryex type=service state=all
かなり長いですが、アクティブ、非アクティブ、無効化されたサービスなど、すべてのサービスを網羅しています。出力は一見すると複雑に見えますが、SERVICE_NAMEとSTATEフィールドに注目すれば、要点を掴むことができます。解析するのが難しすぎる場合は、実行中のサービスだけに絞り込んでみてください。
sc queryex type=service state=running
ステップ3: クイックスキャンのためにサービス名だけを表示する
ノイズをカットしたい場合は、出力をfindにパイプします。
sc queryex type=service state=all | find /i "SERVICE_NAME:"
これにより、サービス名のリストがよりわかりやすくなります。トラブルシューティングやバッチプロセスのスクリプト作成時に便利です。
ステップ4: 非アクティブなサービスを確認する
すべてのサービスが常に実行されているわけではないので、どのサービスがオフまたは無効になっているかを確認するには、コマンドを変更します。
sc queryex type=service state=inactive
ステップ5: 特定のサービスにクエリを実行する
特定のサービスをチェックする必要がありますか?サービス名を指定するだけです。例えば、Windowsデバイスインストールサービスをチェックするには、次のようにします。
sc query "DeviceInstall"
注: サービス名にスペースが含まれている場合は引用符を使用してください。これは、特定のサービスに関する問題を診断したり、管理タスクを自動化するスクリプトを作成したりするのに役立ちます。
PowerShell で Windows サービスを一覧表示する
PowerShellはまさに魔法のツールです。より柔軟で強力、そして自動化にも最適です。Windows管理タスクの万能ツールとも言えるでしょう。PowerShellを使えば、すべてのサービスの一覧を取得し、リアルタイムでフィルタリングしたり、データをエクスポートして後で分析したりすることも可能です。さらに、これらのコマンドをリモートから実行できるため、ネットワークのトラブルシューティングにかかる時間を大幅に節約できます。
スタートメニューでPowerShellを検索し、右クリックして「管理者として実行」を選択して、管理者として起動します。起動したら、すべてのサービスを一覧表示するための基本情報は以下のとおりです。
Get-Service でサービスを一覧表示する方法
実行するだけです:
Get-Service
これは長いリストなので、次のようにファイルに保存することをお勧めします。
Get-Service | Out-File "C:\logs\All_Services.txt"
特定のサービスのステータスを確認するには、その名前を追加するだけです。
Get-Service CryptSvc, COMSysApp
実行中のものだけをフィルタリングするには、Where-Objectでパイプします。
Get-Service | Where-Object {$_. Status -EQ "Running"}
依存関係を見つける方法
関連サービスを含む完全な情報が必要な場合は、-RequiredServicesまたは-DependentServicesフラグを追加します。問題の解決や一括操作のスクリプト作成に非常に役立ちます。
Get-Service -Name "CryptSvc" -RequiredServices
または、特定のサービスに依存するものを確認するには、次のようにします。
Get-Service -Name "CryptSvc" -DependentServices
リモート処理とリモートサービスチェック
別のマシンのサービスを確認したい場合は、PCのホスト名またはIPアドレスに-ComputerNameを追加してください。
Get-Service -Name CryptSvc -ComputerName "Workstation7"
PowerShell によるサービスの管理
リスト表示は確かに便利ですが、PowerShellの真価はサービスの管理にあります。GUIに触れることなく、サービスの開始、停止、再起動、さらには開始方法(自動、手動、無効化)の変更も可能です。
以下に一般的なコマンドをいくつか示します。
- Stop-Service -Name Spooler — 印刷スプーラーがハングし続ける場合などに、印刷スプーラーを停止します。
- Start-Service -Name Spooler — 再度オンにします。
- Restart-Service -Name Spooler — PC 全体を再起動せずに、そのサービスをすばやく再起動します。
- Set-Service ‘Spooler’ -StartupType Disabled — トラブルシューティングを行う場合や、バックグラウンドでの肥大化を抑える必要がある場合は、起動時に自動的に起動しないように無効にします。
Windows サービスを一覧表示する最適な方法は何ですか?
正直に言うと、PowerShellこそが王者です。コマンドプロンプトでも基本的なリスト作成は可能ですが、PowerShellのフィルタリング、エクスポート、スクリプト機能は、特に複数のマシンの管理やバッチ処理の実行時に非常に役立ちます。
したがって、どのサービスが稼働しているか、停止しているか、またはバックグラウンドで潜んでいるかを完全に把握したい場合は、PowerShell が最適です。
まとめ
- コマンドプロンプトを使用して
sc queryex、サービスステータスを素早く簡単にチェックします - PowerShellは
Get-Serviceより多機能で、フィルタリング、エクスポート、サービス制御が簡単に行えます。 -ComputerNamePowerShell のフラグを使用してサービスをリモートでチェックする- GUI を開かずに PowerShell コマンドで直接サービスを管理します
まとめ
コマンドラインツールを使ってWindowsサービスの一覧表示と管理をマスターすれば、トラブルシューティングと自動化が飛躍的に効率化されます。タスクマネージャーだけに頼って診断をする必要がなくなるのは、本当に助かります。これらのコマンドやスクリプトに慣れてしまうと、もう元には戻れません。ただし、コマンドにはちょっとした調整が必要な場合もあります。例えば、管理者として実行したり、出力を適切にフィルタリングしたりするなどです。このツールが、誰かのIT関連作業の時間を少しでも短縮してくれることを願っています。正直なところ、一度コツをつかめば、これらのツールは本当に便利です。
この記事は役に立ちましたか?