打开cmd.exe时,如何停止批处理文件和pushd引用unc



我正试图从本地Windows服务器运行一个批处理文件,该服务器调用域中的计算机从共享文件夹中提取并运行exe。我不确定我的剧本是想做得太多还是太少。

所以我在本地运行以下批次

X:pstoolspsexec.exe \Computer -d -u DOMAINuser -p password -i \SERVERtesttestfile.bat

和测试文件.bat:

@echo off
pushd \SERVERtest
call program.exe
popd

当我运行脚本时,psexec会运行,我会得到一个确认,即testfile.bat已在目标计算机上启动。在目标计算机上什么也没发生。如果我导航到目标计算机上的共享并运行testfile.bat;CMD。EXE没有以上述路径作为当前目录启动。不支持UNC路径。默认为Windows目录"从那里,计算机运行名为.exe的程序,没有任何问题。

如果我将此目标指向域中的另一台服务器,它会完美执行,但不会在域计算机上执行。我想可能是GPO问题,但我找不到解决方案。

感谢您提供的任何知识或帮助!

感谢大家提供的所有提示!这就是我最终让它为任何可能有同样问题的人工作的方式。

服务器上的脚本:

x:pstoolspsexec.exe \Computer(or text file with computers listed) -d -s cmd /c (batchfile.bat)

与我之前尝试的类似,但为了确保您在远程PC上以系统的身份运行命令行,您必须指定"-s cmd";。/c将批处理复制到远程系统以在本地运行。您可以包含一个"-f";如果您以前已经复制过,则进行覆盖。我只是把批处理文件放在pstools文件夹中。

Batchfile.bat:

pushd \networkdrive
call (.bat/.cmd/.exe/etc.)
popd

我禁用了防火墙进行测试,但我认为您必须为PSEXEC打开TCP-445/UDP-137。否则,就这样。超级简单的解决方案。

最新更新