2013-02-14 66 views
0

我正在使用psexec在系統上執行.bat。這將指紋系統並將信息返回給我。我使用的命令是:psexec參數不正確

psexec \\server -u username -p password -s -i -c .\fingerprint.bat 

這適用於大多數服務器,但其中一些不能與-i開關一起使用。有沒有辦法說,如果失敗了,請嘗試在沒有-i的情況下再次執行此操作?我正在使用powershell來執行腳本。

$servers = get-content .\input.txt 

foreach($server in $servers) { 
    psexec \\$server -u username -p password -s -i -c .\fingerprint.bat 
} 
+0

從來沒有工作過與PowerShell,但必須有一些方法來捕獲執行代碼的psexec。例如相當於bash的'$!'。 – 2013-02-14 16:13:16

回答

2

檢查$ LastExitCode自動變量。 PowerShell在調用EXE時會被設置。無論退出代碼EXE返回到$ LastExitCode。我對成功很肯定PSEXEC返回0,和其他任何手段失效如:

foreach($server in $servers) { 
    psexec \\$server -u username -p password -s -i -c .\fingerprint.bat 
    if ($LastExitCode) { 
     psexec \\$server -u username -p password -s -c .\fingerprint.bat 
    } 
} 

這是使用PowerShell的把戲,將評估是否爲true,如果$ LastExitCode是什麼,但0

+0

謝謝!我會給你一個鏡頭。 – Jeff 2013-02-15 15:36:11

+0

我將使用if($ lastExitCode -ne 0)。非常感謝。任何方式來獲取最後的錯誤信息? – Jeff 2013-02-15 15:44:15

+0

你應該可以像這樣捕獲stderr/stdout輸出:'$ res = psexec ...。\ fingerprint.bat 2>&1'。 – 2013-02-15 16:45:39