我对 PSExec 的了解已经达到了极限;我正在使用一个软件堆栈,该堆栈使用它来启动远程机器上的一些批处理文件和 perl 脚本,但其中一台机器出了问题,我们不确定该尝试什么。我得到了以下信息:
PsExec 无法在 [计算机名称已删除] 上启动 explorer.exe:
该系统找不到指定的文件。
运行以下命令时:
psexec -i -u [用户名已删除] -p [密码已删除] \[机器名称已删除] explorer.exe C:\TestAutomation\RunScript.pl
该命令在其他机器上有效,因此这是机器问题,几乎可以肯定是目标机器的问题(因为我可以针对另一台机器运行相同的命令,并且它运行正常)。如果我远程桌面进入目标机器,我可以运行以下命令:
explorer.exe C:\TestAutomation\RunScript.pl
并且它运行正常。我已将 C:\Windows 共享为 ADMIN$。如果我远程桌面进入机器,我会得到“管道另一端没有进程”,这似乎是 PSExec 不理解 RDP 的常见问题;但是,如果我先运行 net use 命令(这是我们的正常软件堆栈所做的),我又会得到上述错误。
在故障排除过程中我该继续什么步骤?
预计到达时间:
C:>psexec -i -u [用户名已删除] -p [密码已删除] \[机器名称已删除] C:\Windows\explorer.exe C:\TestAutomation\RunScript.pl
有完全相同的结果(找不到文件)
C:>psexec -i -u [用户名已删除] -p [密码已删除] \[计算机名称已删除] ping [第二台计算机名称已删除]
工作正常。
C:>psexec -i -u [用户名已删除] -p [密码已删除] \[机器名称已删除] C:\Windows\explorer C:\TestAutomation\RunScript.pl
让我
PsExec 无法在 [计算机名称已删除] 上启动 C:\Windows\explorer:
拒绝访问。
尽管
C:>psexec -i -u [用户名已删除] -p [密码已删除] \[机器名称已删除] explorer C:\TestAutomation\RunScript.pl
让我
PsExec 无法在 [计算机名称已删除] 上启动资源管理器:
该系统找不到指定的文件。
所以我想知道我是否没有多个问题?路径问题和访问问题?我使用的用户名是远程计算机上的管理员。
答案1
psexec 不会在目标计算机 PATH 变量中搜索可执行文件。并且(如果我错了请纠正我)据我所知我没有解析环境变量。
因此您只需指定要运行的文件的完整路径。在您的例子中,使用
C:\Windows\explorer.exe
代替
explorer.exe
类似于 techie007s 的示例,但没有 %windir% (system32 也是错误的):
psexec -i -u [username redacted] -p [password redacted] \[machine name redacted] C:\Windows\explorer.exe C:\TestAutomation\RunScript.pl
答案2
这是权限问题。我检查了 C:\Windows 上的权限六次,但最后我检查了 C:\Windows\explorer.exe 上的权限,发现它们不同。添加组“Everyone”并赋予“完全控制”权限后,PsExec 就可以正常运行。尽管出现了针对权限问题的特定错误消息,但出于某些未知原因,PsExec 决定在此实例中使用未找到的文件。