DOS批处理编程pSEXEC

3

我有一个批处理文件,比如A.bat。执行时,这个A.bat会创建另一个批处理文件,比如remote.bat。

如果我手动将remote.bat复制到远程机器上,则完美运行100%。但是,如果我将其作为A.bat中的psExec的一部分使用,则根本不起作用。然而,在执行A.bat时,我的A.bat会说...

Connecting to ABCDEF machine
Starting PsExec Server on ABCDEF machine
Copying C:\remote.bat on ABCDEF machine
Started C:\remote.bat ABCDEF machine with Process Id XXXX

然而,看起来remote.bat文件并没有被执行。

我在remote.bat文件中所写的内容是...

net use \\DIR1\DIR2 password /user:Administrator 
XCOPY \\DIR1\DIR2\DIR3\DIR4\* c:\DIR3\DIR4\ /E 

我完全看不到在远程机器的C盘下创建了DIR3\DIR4文件夹。但是,如果我手动复制remote.bat并在远程机器上执行它,则可以正常工作。

我使用的命令调用PsExec是

psexec \\MachineName -u Administrator -p pasword -d -c -f c:\remote.bat

有什么建议吗?


1
DOS...哇哦。我无法提供任何解决问题的建议,但您也可以尝试在superuser.com上提出问题。我不确定那里的反馈会更好还是更差。 - Joe
已投票关闭并迁移到SuperUser。只需再投几票即可。顺便说一下,由于您的批处理文件在远程计算机上运行良好,因此看起来是您使用“psexec”的问题。psexec命令中的c:\ remote.bat是否是指远程机器上的副本? - pavium
@Joe:如果不是DOS批处理编程,你还会建议使用什么来执行在VPN上的远程机器上的任务呢? - Sarah Mathews
@Pavium:是的,psExec 的 -c 选项表示它会将 c:\remote.bat 复制到远程计算机,然后在那里执行。 - Sarah Mathews
我并不是在说你“做错了”——只是我没有什么建议可以提供,而SuperUser.com也可能是一个获取信息的好地方。祝你好运! - Joe
1个回答

2
与CMD相关的BAT文件在您的本地用户配置文件中。我不确定Shell如何处理它,但调用psexec远程目标不会调用cmd来运行批处理文件。
cmd.exe /c放在remote.bat之前,像这样:
psexec \\MachineName -u Administrator -p pasword -d -c -f cmd.exe /c c:\remote.bat

但是首先你必须传输remote.bat文件。整个过程看起来像这样:

net use \\MachineName\C$ password /user:Administrator 
XCOPY remote.bat \\MachineName\C$\remote.bat
psexec \\MachineName -u Administrator -p pasword -d -c -f cmd.exe /c c:\remote.bat
net use /delete \\MachineName\C$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接