Windowsサービスを高速検索する方法|MMC「サービス」に検索ボックスがない問題をPowerShellで解決

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 のエクスポート機能です。

一覧エクスポートの手順

  1. Win + R キーで「ファイル名を指定して実行」を開く
  2. services.msc と入力して Enter
  3. メニューから [操作]→[一覧のエクスポート…] をクリック
  4. 保存先とファイル名を指定(デフォルトはタブ区切りテキスト .txt)

出力されるテキストには、次のような列情報が含まれます(OSバージョンにより多少異なります)。

  • 表示名(DisplayName)
  • 名前(サービス名 / Name)
  • 状態(実行中/停止など)
  • スタートアップの種類(自動/手動/無効など)
  • 説明

あとはこのテキストをメモ帳や Excel で開けば、任意の列を横断して全文検索できます。

メモ帳で手軽に全文検索

  1. エクスポートした .txt をダブルクリックしてメモ帳で開く
  2. Ctrl + F で検索ダイアログを開く
  3. 探したい単語(例:SQL、print、サービス名の一部など)を入力して検索

行の中に検索語が含まれていればヒットするので、表示名・説明・ログオンアカウントなどを意識せず横断検索できます。

Excel でフィルターや並べ替えを駆使する

より本格的に分析したい場合は、Excel のほうが便利です。

  1. Excel を開く
  2. [データ]タブ → [テキストまたは CSV から](または単純にドラッグ&ドロップ)でエクスポートした .txt を読み込む
  3. 区切り文字を「タブ」に指定して取り込み
  4. ヘッダー行にフィルターを設定([データ]→[フィルター])

これで、

  • 説明列に「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システム内部で使われるサービス名スクリプトからサービス操作を行うときのキー
DisplayNameservices.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 から投稿する流れ

  1. スタートメニューから「フィードバック Hub」を検索して起動
  2. [フィードバックの送信]を選択
  3. タイトルと詳細を入力
  4. カテゴリとして
    [開発者ツール] → [Microsoft 管理コンソール (MMC)]
    を選択
  5. 必要に応じて、画面のスクリーンショットを追加
  6. 送信

要望の文面例としては、次のような形が考えられます。

MMC 3.0 の[サービス]スナップインに、複数列(表示名/名前/状態/説明/ログオン名など)を横断する検索機能を追加してください。
サービスの数が多い環境では、スクロールと目視による検索では効率が悪く、PowerShell やアウトプットのエクスポートで回避していますが、GUI 上で簡単に検索できると非常に助かります。

同じ要望を持つユーザーが多いほど、将来のバージョンで実装される可能性は高まります。チーム内で共有し、余裕があればそれぞれ送っておくとよいでしょう。

実務シナリオ別:どの手段を選ぶべきか

ここまで紹介した方法を「実務シナリオ」ごとに整理すると、次のような使い分けが現実的です。

シナリオ推奨アプローチ具体的な手段
「あのサービス入ってたっけ?」を確認したいPowerShell ワンライナーGet-Service -DisplayName '*SQL*' など
説明や実行パスから怪しいサービスを探したいPowerShell + Get-CimInstanceGet-CimInstance Win32_Service + -match 検索
目視でサクっと候補を絞り込みたいOut-GridView検索ボックス付き GUI でインタラクティブにフィルター
監査や棚卸しで一覧を提出したいCSV出力 + ExcelExport-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 全体の管理効率も大きく向上するはずです。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次