psExec没有path

我有一个全新的Windows 2008服务器(64位),而使用nant和psExec的远程部署脚本的行为并不像在旧服务器上那样。

这工作: psExec \\newserver.myco.com cmd
这成功运行Nant: psexec \\newserver.myco.com "C:\Program Files (x86)\Nant\Nant.exe"
好吧,它没有做任何有意义的事情,但它表明,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位)的服务器上工作正常。

我可以validationNant是否在newServer的path上:

 C:\>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;"C:\Program Files (x86)\nant" 

如果我在该机器的命令窗口中键入“nant”,则会得到nant的输出。 即使我通过psexec cmd进入,path和nant仍然存在并且正确。

在2008年psexec上的path是什么?

看着进程监视器的结果是一个损坏的文件path,所以pathvariables搞砸了。 从“C:\ Program Files(x86)\ nant”中删除双引号,如果查看一个结果,则显示引号直接embedded到文件path中。

在PATHvariables中不需要双引号,它是标记事物而不是空格的分号。

我不知道是否需要添加尾随反斜杠(C:\ Program Files(x86)\ nant \),或者不要。

我很喜欢sysinternals

可能试试:

-i运行该程序,以便与远程系统上指定会话的桌面交互。 如果没有指定会话,则进程在控制台会话中运行。

-w设置进程的工作目录(相对于远程计算机)。

让我知道, – 马修

感谢马修。

-i工作,也没有指定一个工作目录。 请记住,可执行文件是到达远程机器,它正在安装服务! 它只是找不到path。

但是,当我正在考虑这个时,psexec用来推送到system32path,然后他们改变它推送到Windowspath。 嗯…也许它是在错误的地方寻找自己?

短发