我在 Windows 2008 R2 服务器上有以下批处理脚本:
@echo off
djoin.exe /provision /domain my.domain.com /machine test /savefile savefile.txt
echo %ERRORLEVEL%
如果我在服务器本身上运行脚本,无论是通过命令提示符还是 PowerShell,它都可以正常工作并返回“0”。
问题是我需要从远程计算机执行它,所以我执行以下操作(仅用于测试的示例):
Invoke-Command -ComputerName remotehost -ScriptBlock {.\script.cmd}
输出是“-1073740940”,这可能是错误代码 C0000374,这可能与堆损坏有关。
这似乎是 djoin 命令本身的问题。我可以注释掉 djoin 并运行其他二进制文件,例如 ping,使用相同的 Invoke-Command 没有问题。
请记住,当从目标计算机上的 PowerShell 执行脚本时,该脚本工作得非常好,远程操作会引入哪些问题?
在这两种情况下,脚本都使用我的帐户以相同的权限执行,该帐户是 Domain Admins 的成员。我怀疑这是一个权限问题,不知道还能去哪里看。
[编辑]
放弃了整件事。这要么是 djoin 中的错误,要么是 djoin 和 PS 远程处理之间的交互中的一些模糊问题。
我设法直接在客户端上运行 djoin,使用“runas / netonly ...”来提供域凭据。这是一个非常混乱的解决方案(我还没有弄清楚如何获得由 runas 启动的进程的退出状态),但可以完成工作。