DOS批量编程pSEXEC

时间:2011-05-13 04:36:33

标签: batch-file dos psexec

我有一个批处理文件,比如A.bat 执行时,此A.bat将创建另一个批处理文件,例如remote.bat

如果我手动将remote.bat复制到远程计算机,那么它可以100%完美地工作。但是,如果我在我的A.bat中将它用作psExec的一部分,那么它根本不起作用。但是,我的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 

我根本没有看到DIR3 \ DIR4在我的远程机器的C:下创建。但是,如果我手动复制remote.bat并在远程计算机中执行它,它就可以工作。

我用来调用PsExec的命令是

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

有什么建议吗?请?

1 个答案:

答案 0 :(得分:2)

BAT文件与C​​MD的关联位于您的本地用户配置文件中。我不确定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$