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

How do I stop my batch file and pushd from referencing the unc when opening cmd.exe?

我正在尝试 运行 来自本地 Windows 服务器的批处理文件,它调用我域中的计算机从共享文件夹和 运行 一个 exe。我不确定我的脚本是想做太多还是太少。

所以我在本地 运行 下面的批处理

X:\pstools\psexec.exe \Computer -d -u DOMAIN\user -p password -i \SERVER\test\testfile.bat

和testfile.bat:

@echo off
pushd \SERVER\test\
call program.exe
popd

当我 运行 脚本时,psexec 运行s 并且我得到确认 testfile.bat 已在目标计算机上启动。在目标计算机上没有任何反应。如果我导航到目标计算机上的共享和 运行 testfile.bat,我会得到“CMD.EXE 未使用上述路径启动,因为当前 directory.UNC 路径不受支持。默认为 Windows 目录。”从那里计算机 运行s 调用的 .exe 没有问题。

如果我将其定位到我域中的另一台服务器,它会完美执行,但在域计算机上却不行。我以为可能是 GPO 问题,但找不到解决方案。

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

感谢大家的所有提示!这就是我最终为可能遇到相同问题的任何人提供服务的方式。

服务器上的脚本:

x:\pstools\psexec.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。否则,就是这样。超级简单的解决方案。