質問者
【バッチファイル】csvファイルからサービス名を取得し、そのサービス状態を確認する方法

質問
-
「sc query サービス名 | findstr STATE」のコマンドで下記のようにサービスのステータスを確認したいです。
===========================================
sc query AJRouter | findstr STATE
STATE : 1 STOPPED
===========================================
しかし、確認するサービスが多いので以下のようにしたいと考えています。
1.以下の「service.csv」を用意し、一番左の「Name」からサービス名を取得する。
===========================================
Name,DisplayName
AJRouter,AllJoyn Router Service
ALG,Application Layer Gateway Service
(後略)
===========================================
2.左から2番目の「DisplayName」を取得したサービスの状態を以下のように「DisplayName = STATE」の状態で表示する。
AllJoyn Router Service is STOPPED
1と2の片方だけででもアドバイス頂ければ幸いです。
すべての返信
-
こちらの意図が伝わっていなかったようで申し訳ありません。
ご提示頂いたコマンドだとコマンド本文にサービス名(AJRouter,ALG)を書いておく必要があります。
それだとサービス名を都度書く必要がありますし、数が多いと変更が大変になります。
コマンド自体は変数にしておき、その変数に別のcsvファイルからサービス名を取得してきて代入したいのです。
例えば以下のような形で、変数「servicename」とし、それに入るのが「service.csv」の一番左側の値です。
sc query %servicename | findstr STATE
- 編集済み SPO1019 2020年11月27日 4:06
-
csv ファイルは Import-Csv (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Docs で読み込んで、ForEach-Object (Microsoft.PowerShell.Core) - PowerShell | Microsoft Docs で1行ずつ処理できますね。
Hebikuzure aka Murachi Akira