尝试:
(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 }
这将获得远程计算机上服务二进制文件的文件版本。