我有以下批處理腳本在Windows 2008 R2服務器上:批處理腳本運行正常;但如果通過PowerShell遠程執行失敗
@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啓動的進程的退出狀態),但是完成了工作。
執行命令 - 計算機遠程主機-ScriptBlock {djoin.exe/provision/domain my.domain.com/machine test/savefile savefile.txt; $ LASTEXITCODE}'做什麼不同?換句話說:爲什麼你需要批處理文件? – Joey 2012-03-29 13:28:02
以完全相同的方式失敗。批處理文件出現在我沒有了解如何運行djoin.exe的所有其他想法時。例如,運行「djoin.exe /?」,例如,工作得很好,我得到的使用情況輸出。但是這個命令用於在活動目錄中預置計算機帳戶,這是失敗的主要操作。 – VokinLoksar 2012-03-29 14:28:49
好吧,但這不是批處理文件,而是PowerShell遠程處理環境,它以某種方式阻止'djoin'做它應該做的事情。 – Joey 2012-03-29 14:45:06