![psExec 没有路径](https://linux22.com/image/500639/psExec%20%E6%B2%A1%E6%9C%89%E8%B7%AF%E5%BE%84.png)
我有一个全新的 Windows 2008 服务器(64 位),使用 nant 和 psExec 的远程部署脚本的行为与在旧服务器上不同。
这有效:psExec \\newserver.myco.com cmd
这成功运行了 Nant:psexec \\newserver.myco.com "C:\Program Files (x86)\Nant\Nant.exe"
好的,它没有对 nant 执行任何有意义的操作,但它显示 nant.exe 确实运行了。
但这没有运行:
psexec \\newserver.myco.com Nant
或
psexec \\newserver.myco.com Nant.exe
或
psexec \\newserver.myco.com "Nant.exe"
我得到:
PsExec could not start Nant.exe on newserver.myco.com :
The system cannot find the file specified.
这在运行 Server 2003 的其他服务器上运行良好,也是 64 位。
我可以验证 Nant 是否位于 newServer 上的路径上:
C:\>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;"C:\Program Files (x86)\nant"
如果我在该机器的命令窗口中输入“nant”,则会得到 nant 的输出。即使我通过 进入,路径和 nant 也是存在的并且是正确的psexec cmd
。
2008 上的 psexec 路径怎么了?
答案1
查看进程监视器结果,发现文件路径已损坏,因此路径变量已混乱。从“C:\Program Files(x86)\nant”中删除双引号,如果您查看一个结果,会发现引号已直接嵌入到文件路径中。
PATH 变量中不需要双引号,而是用分号而不是空格来标记内容的位置。
我不知道您是否必须添加尾随反斜杠 (C:\Program Files(x86)\nant\ ),请两种方式都尝试一下。
我非常喜欢 sysinternals
答案2
可以尝试:
-i 运行程序,使其与远程系统上指定会话的桌面交互。如果未指定会话,则进程在控制台会话中运行。
-w 设置进程的工作目录(相对于远程计算机)。
请告诉我,-Mathew
答案3
谢谢马修。
-i 不起作用,指定工作目录也不起作用。请记住,可执行文件正在到达远程计算机,并且正在安装服务!它只是找不到路径。
但是当我想到这一点时,psexec 过去会推送到 system32 路径,然后他们将其更改为推送到 windows 路径。嗯... 也许它在错误的地方寻找自己?
鲍勃