コマンドについて詳しく解説します
- WindowsのPowerShellを使って、サービスの一覧を取得したい
- 開始状態のサービスの一覧を取得して、CSVファイルに出力したい
この記事では、以上の疑問にお答えします。
WindowsのPowerShellでは、起動しているサービスの状態を一括取得することが可能です。
このコマンドを使い、サービスの起動状態をCSVファイルに出力する方法をまとめました。
全状態のサービスを出力
Powershellでは、現在のサービス状態を出力するには下記のコマンドを使います。
get-service
実行するとこのような感じ。
「Status」に状態が、「Name」がサービス名、「DisplayName」が表示名です。
- Running:サービス停止中
- Stopped:サービス開始中
状態が「開始」のサービスのみを出力
続いて、状態が「開始」となっているサービスのみを出力する場合は下記を使います。
get-service | where-object {$_.Status -eq "Running"}
実行してみるとこう。 Runningのみが表示されていることがわかります。
これは where-object コマンドで特定の状態のサービスのみを抽出するよう、Get-Serviceに指定していることになります。
停止中のみ出力したければ {$_.Status -eq "Stopped"} と記述してあげればでOK。
状態が「開始」のサービスのみを出力し、CSVにエクスポート
このコマンドだけだとコンソール画面上に表示するだけなので、CSVに出力して編集しやすい形にしましょう。 その場合のコマンドは下記の通り。
get-service | where-object {$_.Status -eq "Running"} | Export-Csv -encoding Default service.csv
Export-Csv コマンドを使って、さっきの出力内容をCSVにエクスポートします。 もちろんファイル名は任意の名前で指定できます。
デフォルトの状態では出力後になぜか文字化けしてしまうので -encoding Default のオプションを付け加えておくといい感じです。
まとめ
この記事で紹介した Where-Object と Export-Csv は何かと使えます。 覚えておいて損はないかな、と。