0

私は何か簡単なことをしようとしています。

コピーを起動して $lastexitcode をチェックする robocopy ジョブを作成したいと考えています。

$Source = "c:\SourceFolder"
$Destination "\\someserver\Destinationfolder"

$ScriptBlock = [scriptblock]::Create("robocopy $Source $Destination /MOVE /E /R:5 /E /W:5 /A-:SH; if ( $lastexitcode -gt 8) { LOGMESSAGE ERROR } else { LOGMESSAGE SUCCESS }")

start-job -scriptblock $ScriptBlock

LOGMESSAGE は、イベントをログに記録し、エラーが発生した場合にメールを送信する関数です。

どういうわけか、 $lastexitcode 値は常に 16 に返されます-コピーが機能する場合でも。また、関数は実行されません(スクリプトブロックの外で動作します)

誰かが私が間違っていることについての手がかりを持っていますか?

どんな助けでも大歓迎です。

ありがとう !

4

1 に答える 1

0

あなたが成功したと推測して、あなたのコメントを見てください。私が引用したリンクがダウンした場合に備えて、将来の読者のための答えを次に示します。基本的に、start-process コマンドを変数に割り当て、-passthruタグをスローして、後でポーリングできるようにし.exitcodeます。

$A = Start-Process -FilePath .\my-app\my-fle.bat -Wait -passthru
$A.ExitCode
于 2014-02-05T09:45:15.360 に答える