12

Win 2k8 で実行される一連のサーバー上のすべての Windows サービスの物理実行パスを取得する必要があります。このOSに同梱されているpowershellのバージョンは2.0なので、Get-WmiObjectの代わりにGet-serviceコマンドを使いたいと思いました。以下のコマンドを使用して物理パスをプルできることを知っています

$QueryApp = "Select * from Win32_Service Where Name='AxInstSV'"
$Path = (Get-WmiObject -ComputerName MyServer -Query $QueryApp).PathName

このコマンドで物理パスを取得するのではなく、PS バージョン 2.0 に付属の Get-Service コマンドを使用したかったのです。

どんな助けでも大歓迎です。

4

5 に答える 5

17

PowerShell 3 でも、Get-Service で取得する方法がわかりません。

このワンライナーはパス名を取得しますが、優先される「左にフィルター」動作が少し少なくなります。

gwmi win32_service|?{$_.name -eq "AxInstSV"}|select pathname

または、文字列自体だけが必要な場合:

(gwmi win32_service|?{$_.name -eq "AxInstSV"}).pathname
于 2012-09-25T17:35:30.567 に答える
2

私は似たようなことをしたかったのですが、サービスの下で実行されているプロセスのパスを検索/照合することに基づいていたので、従来の WMI クエリ構文を使用し、結果を format-table に渡しました。

$pathWildSearch = "orton";
gwmi -Query "select * from win32_service where pathname like '%$pathWildSearch%' and state='Running'" | Format-Table -Property Name, State, PathName -AutoSize -Wrap

$pathWildSearch の定義と渡しをスキップして、これをワンライナーに変更してもかまいません。または、gwmi ステートメントを戻して、セミコロンの後に続行することもできます。

于 2014-12-21T05:36:53.777 に答える