PowerShellで特定のサービスが実行中かどうかを確認する方法という問いには、Get-Serviceで対象名を指定し、CIMとService Control Managerイベントを合わせて状態と直近の変化を読むという方法で答えます。Get-Serviceは実行状態の確認に向き、Win32_ServiceはStartModeや実行アカウント、バイナリパスを補える。手動開始サービスのStoppedは正常な場合がある。この記事ではNameを主キーにしてDisplayName、Status、StartType、StartName、PathNameを同じサービスへ結び付けるを判断軸にし、実行前の確認、記事固有のコード、合否判定、戻し方を一続きで示します。
サービス操作ではなく、状態・起動方式・イベントを整合させる診断記事である。完了は「期待するStartTypeと現在Statusが業務要件に一致し、失敗があれば同じ時刻帯のイベントで原因候補を示せる」と定義します。対象が取れない場合は「サービスが見つからなければNameとDisplayNameの混同、機能未導入、別端末、アクセス権を確認する」として切り分け、推測で成功扱いにしません。
サービス名をDisplayNameだけで選ばない
Get-Serviceで対象名を指定し、CIMとService Control Managerイベントを合わせて状態と直近の変化を読む。Windowsサービスの状態確認ではこの進め方により、操作したという事実ではなく、期待する状態へ到達したかでタイトルの問いへ答えられます。サービス操作ではなく、状態・起動方式・イベントを整合させる診断記事である。
サービス名をDisplayNameだけで選ばないの合格条件は、期待するStartTypeと現在Statusが業務要件に一致し、失敗があれば同じ時刻帯のイベントで原因候補を示せることです。作業時刻、実行ユーザー、端末名を添え、判断に使った値が後から追える形にします。
Get-Serviceで現在状態を読む
Get-Serviceで現在状態を読むでは、Windowsサービスの状態確認の対象を「Nameを主キーにしてDisplayName、Status、StartType、StartName、PathNameを同じサービスへ結び付ける」という単位で扱います。Get-Serviceは実行状態の確認に向き、Win32_ServiceはStartModeや実行アカウント、バイナリパスを補える。手動開始サービスのStoppedは正常な場合がある。対象が複数なら表示名の部分一致で先頭を採らず、一意になる条件を追加します。
Windowsサービスの状態確認を始める前に、PowerShellの版、コマンドの提供元、必要権限、管理ポリシーの有無を確認します。権限不足と対象なしは意味が異なるため、例外を0件へ置き換えません。
Win32_Serviceで起動方式と実行アカウントを補う
Win32_Serviceで起動方式と実行アカウントを補うは変更前の基準点です。Nameを主キーにしてDisplayName、Status、StartType、StartName、PathNameを同じサービスへ結び付けるを出力に含め、取得時刻と一緒に保存します。値だけを切り取ると別対象との比較になるため、識別列を省きません。
Get-Service -Name 'W32Time' | Format-List Name, DisplayName, Status, StartType
Get-Serviceは実行状態の確認に向き、Win32_ServiceはStartModeや実行アカウント、バイナリパスを補える。手動開始サービスのStoppedは正常な場合がある。出力が多い場合も最初から無理に一件へ絞らず、候補数と除外理由を残してから対象を決めます。
関連イベントを時間帯で絞る
関連イベントを時間帯で絞るでは、Get-Serviceで対象名を指定し、CIMとService Control Managerイベントを合わせて状態と直近の変化を読む。Windowsサービスの状態確認の例中にある名前、パス、ID、時刻はサンプルなので、そのまま本番へ貼らず、直前の読み取り結果から承認値を入れます。
Get-CimInstance Win32_Service -Filter "Name='W32Time'" | Select-Object Name, State, StartMode, StartName, PathName
診断だけの段階でStop-ServiceやStart-Serviceを試さない。依存サービスやクラスタ管理下のサービスも勝手に操作しない。Windowsサービスの状態確認でプレビュー対応コマンドを使える場合はWhatIfを先に実行し、非対応の操作は対象一覧と引数を画面へ出して人が承認してから一度だけ実行します。
Stoppedが異常とは限らない
Stoppedが異常とは限らないでは同じ対象を別経路でもう一度読みます。判定したいのは「コマンドが終了したか」ではなく、期待するStartTypeと現在Statusが業務要件に一致し、失敗があれば同じ時刻帯のイベントで原因候補を示せるかどうかです。
Get-Service -Name 'W32Time'
Get-WinEvent -FilterHashtable @{ LogName='System'; ProviderName='Service Control Manager'; StartTime=(Get-Date).AddHours(-2) } -MaxEvents 20
サービスが見つからなければNameとDisplayNameの混同、機能未導入、別端末、アクセス権を確認する。Windowsサービスの状態確認の期待値と実測値が一致しないときは追加変更を重ねず、対象識別、権限、ポリシー、時間差の順で原因を分けます。
権限不足と存在しないサービスを区別
診断だけの段階でStop-ServiceやStart-Serviceを試さない。依存サービスやクラスタ管理下のサービスも勝手に操作しない。権限不足と存在しないサービスを区別に該当したら、警告を消して継続するのではなく、どの条件で止まったかを記録します。
サービスが見つからなければNameとDisplayNameの混同、機能未導入、別端末、アクセス権を確認する。Windowsサービスの状態確認ではエラー本文、FullyQualifiedErrorId、対象ID、直前に成功した段階を残すと、別担当者が安全な地点から調査できます。
読み取り結果を監視へつなぐ
読み取りのみ。後続の変更では事前のStatusとStartTypeを保存し、サービス固有の復旧手順を使う。復旧操作にも同じ識別条件を使い、名前が似た別対象へ戻し処理を適用しません。
- Windowsサービスの状態確認の変更前値と取得時刻
- 復旧対象: Nameを主キーにしてDisplayName、Status、StartType、StartName、PathNameを同じサービスへ結び付ける
- 復旧後の判定: 期待するStartTypeと現在Statusが業務要件に一致し、失敗があれば同じ時刻帯のイベントで原因候補を示せる
- 再実行を止める条件: 診断だけの段階でStop-ServiceやStart-Serviceを試さない。依存サービスやクラスタ管理下のサービスも勝手に操作しない
変更操作を別手順へ分離
監視ではExpectedStatusをサービスごとに定義し、すべてRunningを正常条件にしない。Windowsサービスの状態確認を繰り返す場合は、正常、対象なし、要承認、失敗を異なる終了状態として記録し、前回値との比較だけで異常を決めません。
| 変更操作を別手順へ分離の識別軸 | Nameを主キーにしてDisplayName、Status、StartType、StartName、PathNameを同じサービスへ結び付ける |
| 採用する実測 | 期待するStartTypeと現在Statusが業務要件に一致し、失敗があれば同じ時刻帯のイベントで原因候補を示せる |
| 0件時の扱い | サービスが見つからなければNameとDisplayNameの混同、機能未導入、別端末、アクセス権を確認する |
| 保留にする兆候 | 診断だけの段階でStop-ServiceやStart-Serviceを試さない。依存サービスやクラスタ管理下のサービスも勝手に操作しない |
Windowsサービスの状態確認の実行記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外した候補と理由を同じ作業番号で残します。特に「Nameを主キーにしてDisplayName、Status、StartType、StartName、PathNameを同じサービスへ結び付ける」を省くと、後日の再確認で別対象の値を比較するおそれがあります。画面コピーだけでなく、日時と端末名を含む構造化した出力も保存します。
PowerShellで特定のサービスが実行中かどうかを確認する方法を定期手順へ組み込む場合も、初回は対話的に候補を確認します。正常時は「期待するStartTypeと現在Statusが業務要件に一致し、失敗があれば同じ時刻帯のイベントで原因候補を示せる」、判定不能時は「サービスが見つからなければNameとDisplayNameの混同、機能未導入、別端末、アクセス権を確認する」、中止時は「診断だけの段階でStop-ServiceやStart-Serviceを試さない。依存サービスやクラスタ管理下のサービスも勝手に操作しない」をそれぞれ別の結果として扱います。これにより、0件や例外を都合よく成功へ丸めず、次の担当者が同じ対象と条件で追試できます。
公式情報・参考資料
Windowsサービスの状態確認で使うコマンド名、引数、対応環境は次のMicrosoft一次資料で確認しました。記事の確認日は2026年7月17日です。OSやモジュール更新後は、実行端末のGet-Helpと併せて再確認してください。

コメント