試す:
(Get-Command $path.pathname).FileVersionInfo.FileVersion
これを使用| select pathname
すると、基本的にプロパティを使用して新しいオブジェクトが作成されpathname
ます。Get-Member
これは、タイプ情報とタイプメンバーのリストを提供する出力をフィードすることで確認できます。例:
PS> Get-WmiObject Win32_Service -Filter "Name = 'Spooler'" | Get-Member
TypeName: System.Management.ManagementObject#root\cimv2\Win32_Service
Name MemberType Definition
---- ---------- ----------
PSComputerName AliasProperty PSComputerName = __SERVER
...
対
PS> Get-WmiObject Win32_Service -Filter "Name = 'Spooler'" | select pathname| Get-Member
TypeName: Selected.System.Management.ManagementObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
pathname NoteProperty System.String pathname=C:\Windows\System32\spoolsv.exe
そうは言っても、リモートコンピューターでサービスのパスを取得し、ローカルコンピューターでバージョンを確認していることになります。サーバーでリモート処理を有効にできる場合は、次のようにすることができます。
Invoke-Command $server { $path = (Get-WmiObject Win32_Service -Filter "Name = 'SysMgmtHp'").PathName; (Get-Command $path).FileVersionInfo.FileVersion }
これにより、リモートコンピューター上のサービスバイナリのファイルバージョンが取得されます。