2012-09-25 6 views
7

Windows 2k8で実行される一連のサーバー上のすべてのWindowsサービスの物理実行パスをプルする必要があります。このOSに同梱されているPowerShellのバージョンは2.0なので、Get-WmiObjectの代わりにGet-serviceコマンドを使いたいと思っていました。 私は、このコマンドは物理パスを引くしたい私はscroll down toパソコンへ転送Get-Serviceコマンドを使用してWindowsサービスの物理パスをプルする方法

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

下記のコマンドを使用して物理パスを引くことができることを知っているが、PSバージョン2.0が付属しています。Get-Serviceコマンドを使用していました。

ご協力いただければ幸いです。

答えて

10

PowerShell 3を使用しても、Get-Serviceで取得する方法はありません。

この1ライナーは、好ましいの少しとはいえ、あなたのパス名を取得する行動「フィルタは、左」:あなたがしたい場合は、

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

をそれとも文字列自体:

(gwmi win32_service|?{$_.name -eq "AxInstSV"}).pathname 
+0

.NETコードは、このPowerShellコードが何をしているのかを、まさに冗長にしています。 – alroc

2

同様のことをやりたかったのですが、サービスで実行されているプロセスのパスを検索/照合することに基づいて、従来のWMIクエリ構文を使用して、結果をフォーマットテーブルに渡しました:

$ pathWildSearchを定義して渡すことで、これを1つのライナーにすることもできます。または、セミコロンの後にgwmiステートメントを続行するだけで済みます。

0

おそらく、少し冗長、

wmic service where "name='AxInstSV'" get PathName 

これはただのPowerShellないだけでなく、コマンドプロンプト上で動作するはずです。


さもないと、あなたが行うことができ、プロセス名自体を持っている場合:

wmic process where "name='AxInstSV.exe'" get ExecutablePath 

ので、ほとんど私はサービス名とのより良い運を持っている、あなたが許可を必要とするプロセスのパスを読み取るには。

0

Iは、Get-Serviceのコマンドを介してこれを行うことができなかったが、あなたのサービスでは、それは自身のプロセスだとして、あなたは、次のコードを経由して、このためには、Get-Processコマンドを使用することができます実行している場合:

(Get-Process -Name AxInstSV).path 

ソース: https://blogs.technet.microsoft.com/heyscriptingguy/2014/09/15/powertip-use-powershell-to-find-path-for-processes/

関連する問題