Windowsの「サービス(services.msc)」で目視スクロールしながら目的のサービスを探すのは、数が多い環境ほどつらくなります。本記事では「管理コンソール(MMC)3.0『サービス』スナップインに検索ボックスが無い」という前提を踏まえつつ、サービス一覧を効率よく検索・抽出するための現実的なテクニックと、公式への機能要望の出し方までをまとめて解説します。
MMC「サービス」に検索ボックスがない現実と、その乗り越え方
MMC 3.0「サービス」スナップインの限界を整理する
まず大前提として、現在の Windows に搭載されている MMC 3.0 の「サービス」スナップイン(services.msc)には、次のような仕様上の制限があります。
| 項目 | できること | できないこと / 制限 |
|---|---|---|
| 検索ボックス | なし | 複数列を横断した全文検索は不可能 |
| 並べ替え | 「表示名」「名前」「状態」「スタートアップの種類」など各列でソート可能 | 並べ替えだけでは「説明」「ログオン名」「パス」を条件に検索できない |
| キーボード入力 | 一覧上で文字を入力すると、表示名の「先頭一致」でジャンプ | 部分一致検索(含む検索)や、説明列など別列の検索は不可 |
| フィルター | 標準機能としてはなし | 特定の状態(停止/実行中)だけを表示するフィルタ機能などは未実装 |
| エクスポート | 「一覧のエクスポート…」からタブ区切りテキストを出力可能 | エクスポート → 別アプリで検索、という二度手間が発生 |
つまり「一覧をそのまま検索したい」というニーズに対し、MMC 単体では応えてくれません。そのため、次のような“迂回ルート”を組み合わせて使うことになります。
- 一覧を一旦テキスト/CSVにエクスポートして検索する
- PowerShell でサービス一覧を取得し、条件検索する
- PowerShell + Out-GridView で簡易 GUI を自作する
- どうしても欲しいなら、フィードバック Hub から機能追加要望を出す
以下では、業務でそのまま使えるレベルの具体的な手順とコマンド例を詳しく見ていきます。
サービス一覧をエクスポートして横断検索する
「とりあえず今だけ一覧を検索したい」「PowerShell はまだハードルが高い」という場合に便利なのが、services.msc のエクスポート機能です。
一覧エクスポートの手順
- Win + R キーで「ファイル名を指定して実行」を開く
services.mscと入力して Enter- メニューから [操作]→[一覧のエクスポート…] をクリック
- 保存先とファイル名を指定(デフォルトはタブ区切りテキスト
.txt)
出力されるテキストには、次のような列情報が含まれます(OSバージョンにより多少異なります)。
- 表示名(DisplayName)
- 名前(サービス名 / Name)
- 状態(実行中/停止など)
- スタートアップの種類(自動/手動/無効など)
- 説明
あとはこのテキストをメモ帳や Excel で開けば、任意の列を横断して全文検索できます。
メモ帳で手軽に全文検索
- エクスポートした
.txtをダブルクリックしてメモ帳で開く - Ctrl + F で検索ダイアログを開く
- 探したい単語(例:
SQL、print、サービス名の一部など)を入力して検索
行の中に検索語が含まれていればヒットするので、表示名・説明・ログオンアカウントなどを意識せず横断検索できます。
Excel でフィルターや並べ替えを駆使する
より本格的に分析したい場合は、Excel のほうが便利です。
- Excel を開く
- [データ]タブ → [テキストまたは CSV から](または単純にドラッグ&ドロップ)でエクスポートした
.txtを読み込む - 区切り文字を「タブ」に指定して取り込み
- ヘッダー行にフィルターを設定([データ]→[フィルター])
これで、
- 説明列に「driver」を含むサービスだけに絞り込み
- 状態列が「実行中」の行だけ表示
- スタートアップの種類が「自動」かつ説明に特定の語を含むサービスを抽出
といった条件で簡単に見つけられます。
| ツール | メリット | 向いているケース |
|---|---|---|
| メモ帳 | 起動が速く、どの環境でも使える | 単発で1〜2語をさっと検索したいとき |
| Excel | フィルター・並べ替え・条件付き書式などが使える | 「自動+実行中のサービス」を一気に把握したいときなど、分析寄り |
ただし、毎回エクスポート → メモ帳 / Excel という流れはやや手間です。繰り返し作業になる場合は、次に紹介する PowerShell のほうが圧倒的に効率的です。
PowerShell でサービスを絞り込み検索する
Windows 管理の定番ツールである PowerShell を使うと、MMC の代わりにサービス一覧を高速に検索できます。特に、
- 表示名/サービス名/状態だけわかればよい →
Get-Service - 説明・ログオン名・実行ファイルのパスまで見たい →
Get-CimInstance Win32_Service
という使い分けが便利です。
表示名に特定の語を含むサービスを探す(Get-Service)
SQL Server 系のサービスをまとめて表示したい場合の例です。
Get-Service -DisplayName '*SQL*' | Format-Table Status, Name, DisplayName
このコマンドのポイントは次のとおりです。
-DisplayName '*SQL*':表示名に「SQL」を含むサービスをワイルドカードで検索Format-Table Status, Name, DisplayName:状態・サービス名・表示名の3列に絞って表形式で表示
ワイルドカード(*)を前後につけることで、前方一致/後方一致ではなく「含む」検索になります。大文字小文字は既定で区別されないため、SQLでもsqlでも同じ結果になります。
名前・表示名・説明・実行パスを横断検索(Get-CimInstance)
ログオンアカウントや実行ファイルのパスまでチェックしたい場合は、Get-CimInstance Win32_Service を使います。
$term = 'print'
Get-CimInstance Win32_Service |
Where-Object {
$_.Name -match $term -or
$_.DisplayName -match $term -or
$_.Description -match $term -or
$_.PathName -match $term
} |
Select-Object Name, DisplayName, State, StartMode, StartName |
Sort-Object DisplayName
このスクリプトは、
- サービス名(
Name) - 表示名(
DisplayName) - 説明(
Description) - 実行ファイルのパス(
PathName)
のいずれかに print という文字列を含むサービスを抜き出し、表示名順で一覧にします。
| プロパティ名 | 内容 | 用途の例 |
|---|---|---|
| Name | システム内部で使われるサービス名 | スクリプトからサービス操作を行うときのキー |
| DisplayName | services.msc で表示される「表示名」 | 管理者が目視で確認するときの名称 |
| State | 実行中 / 停止 などの現在の状態 | 停止しているサービスだけ抽出するなどの監視用途 |
| StartMode | 自動 / 手動 / 無効 などの起動モード | 自動起動のサービスを棚卸しするとき |
| StartName | サービスが実行されるアカウント(ログオン名) | 特定アカウントで動いているサービスを一括把握したいとき |
| PathName | 実行ファイルのパス(EXEのフルパスなど) | どのフォルダーから起動されているかを調査するとき |
たとえば、特定のサービスアカウントで動いているサービスを探したい場合は、次のように書き換えられます。
$account = 'DOMAIN\ServiceAccount1'
Get-CimInstance Win32_Service |
Where-Object { $_.StartName -eq $account } |
Select-Object Name, DisplayName, State, StartMode, StartName
MMC ではログオンアカウントを一件ずつクリックして確認するしかありませんが、PowerShell なら一発で一覧化できます。
Out-GridView で「検索ボックス付き」の簡易GUIを作る
「テキストだけだと見づらい」「GUIでフィルターしたい」という場合は、Out-GridView を使うのがおすすめです。Windows PowerShell には標準で含まれており、検索ボックス付きの一覧ウィンドウを表示してくれます。
Get-CimInstance Win32_Service |
Select-Object Name, DisplayName, State, StartMode, StartName, Description |
Out-GridView -Title 'サービス検索' -PassThru
このコマンドを実行すると、次のようなことができるウィンドウが開きます。
- 上部に検索ボックス:全列を横断して部分一致検索可能
- 列ごとにフィルター:特定の状態や起動種類でフィルター
- 列幅の調整:表示名や説明が長くても見やすくできる
-PassThru を付けておくと、Out-GridView 上で選択した行を PowerShell 側に戻せるため、例えば「選択したサービスだけを再起動する」といった応用もできます。
$selected = Get-CimInstance Win32_Service |
Select-Object Name, DisplayName, State |
Out-GridView -Title '再起動したいサービスを選択' -PassThru
$selected | ForEach-Object {
Restart-Service -Name $_.Name -WhatIf
}
-WhatIf を外せば実際に再起動されますが、最初は挙動確認のために付けたまま試すのが安全です。
なお、PowerShell 7 では Out-GridView を使うために追加モジュールが必要な場合があります。Windows PowerShell 5.x(既定でインストールされている「青い」PowerShell)なら、標準で使えるケースがほとんどです。
Excelでの分析を前提にしたCSV出力
サービス構成の棚卸しや、監査用の証跡として一覧を残したい場合には、PowerShell から直接 CSV を出力してしまうのが便利です。
Get-CimInstance Win32_Service |
Select-Object Name, DisplayName, State, Status, StartMode, StartName, Description, PathName |
Export-Csv -Path "$env:USERPROFILE\Desktop\Services.csv" -NoTypeInformation -Encoding UTF8
このコマンドで、ユーザーのデスクトップに Services.csv が作成されます。Excel で開けば、あとは列のフィルターや並べ替えを自由に使えます。
| 目的 | おすすめ手段 | 理由 |
|---|---|---|
| 一時的に特定サービスを検索 | Get-Service / Out-GridView | ワンライナーで即座に結果が見られる |
| 構成管理・棚卸し | CSV出力 + Excel | 記録として残しやすく、比較や差分管理もしやすい |
| 定期的な監視・レポート | PowerShell スクリプト + タスクスケジューラ | 自動化しやすく、人手による作業を減らせる |
PowerShell の検索構文をざっくり押さえる
さきほどの例に出てきた -like や -match などの「比較演算子」を理解しておくと、サービス検索の柔軟性が一気に上がります。
| 演算子 | 意味 | 主な特徴 | 例 |
|---|---|---|---|
| -like | ワイルドカード検索 | * や ? が使える。既定で大文字小文字を区別しない。 | $_.DisplayName -like '*SQL*' |
| -match | 正規表現検索 | 正規表現パターンが使える。文字列の一部にマッチすれば真。 | $_.Description -match 'print|spool' |
| -eq | 完全一致 | 値が完全に一致する場合のみ真。 | $_.StartMode -eq 'Auto' |
| -ne | 不一致 | 値が異なる場合に真。 | $_.State -ne 'Running' |
サービス検索では、次のような組み合わせがよく使われます。
# 表示名に "SQL" を含み、かつ自動起動のサービス
Get-CimInstance Win32_Service |
Where-Object {
$_.DisplayName -like '*SQL*' -and
$_.StartMode -eq 'Auto'
} |
Select-Object Name, DisplayName, State, StartMode
演算子に迷ったときは、Get-Help で詳細を確認できます。
Get-Help About_Comparison_Operators
また、各コマンドの使い方は次のように確認可能です。
Get-Help Get-Service -Full
Get-Help Get-CimInstance -Full
Get-Help Where-Object -Full
オンライン版のヘルプをブラウザで開きたいときは、-Online オプションを付けます。
MMC「サービス」画面で使えるちょい技
「結局 MMC も使うんだよね」という場面は多いと思います。そこで、services.msc で使える小さな便利技も押さえておきましょう。
表示名の先頭一致ジャンプ
サービス一覧のどこかをクリックしてフォーカスを移した状態で、キーボードから文字を入力してみてください。
pと入力 → 「P」から始まる表示名のサービスにジャンプprと続けて入力 → 「Pr」で始まる表示名を探しに行く
これはあくまで「表示名の先頭一致」であり、説明列やパスを含む全文検索ではありませんが、「だいたい名前はわかっている」ときに素早く移動できます。
列の表示・非表示を調整する
services.msc では、列ヘッダーを右クリックして「列の選択」を開くと、「説明」など一部の列を表示・非表示に切り替えられます。
検索機能の代わりにはなりませんが、「説明」を常に表示しておくだけでも目的のサービスが見つけやすくなります。
公式に機能追加をお願いする:フィードバック Hub
「どうしても MMC の『サービス』自体に検索機能が欲しい」という場合は、Microsoft に対して正式に要望を出しておくのも有効です。Windows には フィードバック Hub という標準アプリがあり、ここから機能追加の希望を投稿できます。
フィードバック Hub から投稿する流れ
- スタートメニューから「フィードバック Hub」を検索して起動
- [フィードバックの送信]を選択
- タイトルと詳細を入力
- カテゴリとして
[開発者ツール] → [Microsoft 管理コンソール (MMC)]
を選択 - 必要に応じて、画面のスクリーンショットを追加
- 送信
要望の文面例としては、次のような形が考えられます。
MMC 3.0 の[サービス]スナップインに、複数列(表示名/名前/状態/説明/ログオン名など)を横断する検索機能を追加してください。
サービスの数が多い環境では、スクロールと目視による検索では効率が悪く、PowerShell やアウトプットのエクスポートで回避していますが、GUI 上で簡単に検索できると非常に助かります。
同じ要望を持つユーザーが多いほど、将来のバージョンで実装される可能性は高まります。チーム内で共有し、余裕があればそれぞれ送っておくとよいでしょう。
実務シナリオ別:どの手段を選ぶべきか
ここまで紹介した方法を「実務シナリオ」ごとに整理すると、次のような使い分けが現実的です。
| シナリオ | 推奨アプローチ | 具体的な手段 |
|---|---|---|
| 「あのサービス入ってたっけ?」を確認したい | PowerShell ワンライナー | Get-Service -DisplayName '*SQL*' など |
| 説明や実行パスから怪しいサービスを探したい | PowerShell + Get-CimInstance | Get-CimInstance Win32_Service + -match 検索 |
| 目視でサクっと候補を絞り込みたい | Out-GridView | 検索ボックス付き GUI でインタラクティブにフィルター |
| 監査や棚卸しで一覧を提出したい | CSV出力 + Excel | Export-Csv でエクスポート、Excel で整形 |
| どうしても MMC に検索機能が欲しい | フィードバック Hub | [開発者ツール]→[Microsoft 管理コンソール (MMC)]へ要望投稿 |
「検索」だけを目的にするなら、もはや MMC にこだわる必要はありません。PowerShell と Excel/Out-GridView を組み合わせることで、サービス管理は格段に快適になります。
よく使うサンプルコマンドまとめ
記事中に散らばっていたサンプルコマンドを、再掲してまとめておきます。そのままコピー&ペーストして使えます。
表示名に語を含むサービスを検索する
Get-Service -DisplayName '*SQL*' | Format-Table Status, Name, DisplayName
名前・表示名・説明・実行パスを横断検索する
$term = 'print'
Get-CimInstance Win32_Service |
Where-Object {
$_.Name -match $term -or
$_.DisplayName -match $term -or
$_.Description -match $term -or
$_.PathName -match $term
} |
Select-Object Name, DisplayName, State, StartMode, StartName |
Sort-Object DisplayName
GUIで検索(Out-GridView)
Get-CimInstance Win32_Service |
Select-Object Name, DisplayName, State, StartMode, StartName, Description |
Out-GridView -Title 'サービス検索' -PassThru
Excelで分析したい(CSV出力)
Get-CimInstance Win32_Service |
Select-Object Name, DisplayName, State, Status, StartMode, StartName, Description, PathName |
Export-Csv -Path "$env:USERPROFILE\Desktop\Services.csv" -NoTypeInformation -Encoding UTF8
まとめ:MMCに検索がなくても、実務上の「検索ニーズ」は満たせる
最後に、本記事のポイントを整理します。
- 現状、MMC の「サービス」スナップインには検索ボックスがなく、並べ替え+先頭一致ジャンプ程度しかできない。
- とはいえ、一覧のエクスポートとPowerShellを組み合わせることで、表示名・名前・状態・説明・ログオン名・実行ファイルのパスまで含めた横断検索が可能。
Get-Serviceは「表示名/サービス名/状態」を素早く確認したいときに有効。Get-CimInstance Win32_Serviceは、説明・ログオンアカウント・実行パスなど、GUIからは一望しづらい情報を一覧化できる。Out-GridViewを使えば、MMC の代わりになる検索ボックス付きサービス一覧GUIを実現できる。- Excel と CSV 出力を併用すれば、棚卸し・監査・報告書作成など、運用ドキュメント作りにもそのまま流用可能。
- 公式に検索機能を実装してほしい場合は、フィードバック Hubの
[開発者ツール]→[Microsoft 管理コンソール (MMC)]カテゴリから要望を出しておくとよい。
「MMC の『サービス』には検索機能がない」という事実は変わりませんが、PowerShell を活用すれば、むしろ MMC よりも柔軟で再利用性の高い「サービス検索環境」を構築できます。日々の運用の中で少しずつ PowerShell に慣れていけば、サービス管理だけでなく、Windows 全体の管理効率も大きく向上するはずです。

コメント