尝试:
(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 }
这将让服务二进制的文件版本在远程计算机上。
感谢那个基思。尽管如此,它仍然没有显示任何东西。 – lara400
运行'Get-WmiObject Win32_Service -Filter“Name ='SysMgmtHp'”-ComputerName $ server |选择路径名| fl *'。它显示了什么信息?也就是说,路径是有效的。顺便说一下,你知道你正在为远程计算机上的服务获取路径,然后检查该服务的本地副本的版本,对不对? –
.... ahh ...翻转 - 我检查本地副本上的版本?帮助它! - 我想要得到这个路径,然后使用路径来确定远程计算机上的版本....那就是问题了!由于本地计算机没有服务,但远程服务做..任何想法如何让远程服务器使用其远程路径它找到并确定文件的exe文件? – lara400