Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 文件版本输出为空_Powershell_Powershell 2.0 - Fatal编程技术网

Powershell 文件版本输出为空

Powershell 文件版本输出为空,powershell,powershell-2.0,Powershell,Powershell 2.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-C

你知道为什么我在下面什么都没得到吗?该文件位于我查询的服务器上,如果在本地执行,则可以很好地获取文件版本

$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

}
尝试:

当您使用
|时,请选择路径名
,该路径名实际上是使用
路径名
属性创建一个新对象。您可以通过将输出馈送到
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 }

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

您能否发布名为“SysMgmtHp”的服务的
$path.pathname
输出?一些服务在.pathname属性中有附加参数,或者用引号括起来,您可能需要修剪这些参数/引号。另外,发布
getchilditem$path.pathname |选择*
results。

谢谢Keith。不幸的是,它仍然没有显示任何内容。运行
Get WmiObject Win32\u Service-Filter“Name='SysMgmtHp'”-ComputerName$server |选择路径名| fl*
。它显示了什么信息?也就是说,路径是否有效。顺便说一句,您知道您正在获取远程计算机上服务的路径,然后检查该服务的本地副本的版本,对吗?…啊…翻转-我正在检查本地副本上的版本吗?!该死我只想获得该路径,然后使用该路径确定远程计算机上的版本……这就是问题所在!由于本地计算机没有服务,但远程服务有..知道如何让远程服务器使用它找到的远程路径并确定exe的文件版本吗?
Invoke-Command $server { $path = (Get-WmiObject Win32_Service -Filter "Name = 'SysMgmtHp'").PathName; (Get-Command $path).FileVersionInfo.FileVersion }