我有一个批处理文件,比如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
有什么建议吗?请?
答案 0 :(得分:2)
BAT文件与CMD的关联位于您的本地用户配置文件中。我不确定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$