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 コマンド自体の問題のようです。同じ Invoke-Command を使用して問題なく、djoin をコメントアウトして、ping などの他のバイナリを実行できます。
ターゲット コンピューター上の PowerShell からスクリプトを実行すると問題なく動作することを念頭に置いて、リモート操作によってどのような問題が発生する可能性があるでしょうか?
どちらの場合も、Domain Admins のメンバーである私のアカウントを使用して、同じ権限でスクリプトが実行されます。それがパーミッションの問題だとは思えず、他にどこを見るべきかわかりません。
[編集]
全体をあきらめた。これは、djoin のバグか、djoin と PS リモート処理の間の相互作用におけるあいまいな問題のいずれかです。
ドメイン資格情報を提供するために「runas /netonly ...」を使用して、クライアントで直接djoinを実行することができました。これは非常に面倒な解決策ですが (runas によって開始されたプロセスの終了ステータスを取得する方法をまだ理解していません)、仕事は完了します。