0

システムで .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 
}
4

1 に答える 1

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 
   }
}

if ($LastExitCode)これは、$LastExitCode が 0 以外の場合に true と評価されるPowerShell トリックを使用しています。

于 2013-02-14T20:06:19.040 に答える