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 }