FileVersion输出为空

时间:2013-01-15 15:57:23

标签: powershell powershell-v2.0

任何想法为什么我在下面什么也得不到?该文件在我查询的服务器上,如果我在本地执行它,它可以正常获取文件版本。

$computer = Get-Content -Path c:\temp\servers1.txt

foreach ($server in $computer){

$path = Get-WmiObject Win32_Service -Filter "Name = 'SysMgmtHp'" -ComputerName $server | select pathname

(Get-Command $path).FileVersionInfo.FileVersion

}

2 个答案:

答案 0 :(得分:1)

尝试:

(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 }

所有这些说明,您将获得远程计算机上的服务路径,然后检查本地计算机上的版本。如果您可以在服务器上启用远程处理,则可以执行以下操作:

{{1}}

这将获取远程计算机上服务二进制文件的文件版本。

答案 1 :(得分:0)

您可以为名为'SysMgmtHp'的服务发布$path.pathname的输出吗?有几个服务在.pathname属性中有其他参数或用引号括起来,您可能需要修剪这些参数/引号。另外,发布Get-ChildItem $path.pathname | select *个结果。