You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程机器使用PowerShell查询进程路径无返回结果的问题

解决远程Get-Process无法获取进程Path属性的问题

我之前也碰到过一模一样的问题——本地用Get-Process能轻松拿到iexplore.exe的完整运行路径,但远程查询时只能看到进程的基础信息(比如资源占用、进程ID),Path字段完全是空的。这背后主要是权限机制和PowerShell远程属性获取逻辑的问题,下面给你几个可行的解决办法:

为什么远程Get-Process拿不到Path?

默认情况下,Get-Process -ComputerName在远程调用时并不会主动拉取Path属性:一方面,获取进程的可执行文件路径需要访问远程机器的文件系统,普通的远程进程查询权限通常不包含这个访问权限;另一方面,PowerShell的Get-Process在远程场景下的属性返回集是受限的,不像本地查询会加载所有可用属性。

解决方案

1. 改用CIM命令(最推荐)

Win32_Process这个WMI类专门用于获取进程的详细信息,包括可执行文件路径,在远程场景下的兼容性和可靠性都更强。执行以下命令即可:

Get-CimInstance -ComputerName $MyServer -ClassName Win32_Process -Filter "Name LIKE '%iexplore%'" | Select-Object Name, ExecutablePath

这里的ExecutablePath就是你要的进程完整运行路径,只要你的账户拥有远程机器的管理员权限(或至少有读取该文件路径的权限),就能正常返回结果。

2. 确认远程权限足够

  • 你的账户需要是远程机器的本地管理员组成员,或者被明确授予了读取进程可执行文件所在目录的NTFS权限。
  • 可以先测试基础远程权限:用Enter-PSSession $MyServer尝试远程登录,如果能成功进入会话,说明基础的WinRM访问权限没问题;如果不行,需要先在远程机器上执行Enable-PSRemoting -Force开启远程管理(需管理员权限)。

3. 检查WinRM连通性

确保远程机器的WinRM服务正常运行,并且允许你的账户访问:

# 测试远程WinRM连通性
Test-WSMan $MyServer

如果返回错误,需要先排查远程机器的WinRM配置,比如防火墙是否开放了5985(HTTP)或5986(HTTPS)端口。

4. 手动验证路径访问权限

如果用CIM命令还是拿不到结果,可以远程登录目标机器,手动检查iexplore.exe所在路径(默认是C:\Program Files\Internet Explorer\iexplore.exe)的NTFS权限,确保你的账户能读取该文件的属性。

内容的提问来源于stack exchange,提问作者Tanaka Saito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:33:10