Get-Service *sql* | sort DisplayName | out-file c:/servicelist.txt
ローカルマシンで実行されているすべてのサービスのリストを抽出する1行のPowerShellスクリプトがあり、「ステータス」、「名前」、「DisplayName」を表示するだけでなく、表示したい「実行可能ファイルへのパス」
WMIに頼る必要があると思います。
Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, State, PathName
Update選択したデータに対して何らかの操作を実行する場合は、計算されたプロパティを here のように使用できます。
たとえば、パス名の引用符で囲まれたテキストだけが必要な場合は、二重引用符で分割し、配列項目1を取得できます。
Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List
より高速なWMIクエリのバリアント(SCCMクライアント)に対してこれを実行する必要がありました)
$SQLService=(get-wmiobject -Query 'Select * from win32_service where Name like "*SQL*"') | Select-object Name, DisplayName, State, Pathname
もう1つのトリックは、二重引用符なしのパス名が必要な場合に複数のSQL結果をトラップすることです(そのため、それらにアクションを実行できます)。
$SQLService | Select-Object Name, DisplayName, State, @{Name='PathName';Expression=$_.Pathname.replace('"','')}
-query
(またはget-wmiobject
)でget-ciminstance
を使用する大きな利点は、処理速度です。古い例では完全なリストを取得してからフィルタリングしますが、後者では非常に直接的なリストを取得します。
ちょうど2セントで追加:)
乾杯!ショーンザエナジャイズドテック
正規表現パターンを使用して、結果をファイルにダンプすることもできます。
Get-WmiObject win32_service | ?{$_.Name -match '^sql'} | select Name, DisplayName, State, PathName >> C:\temp\sqlservices.txt