Powershell 开始作业-检查Scriptblock中robocopy的$lastexicode
我想做一些简单的事情 我想创建一个robocopy作业,该作业将启动拷贝并检查$lastexitcodePowershell 开始作业-检查Scriptblock中robocopy的$lastexicode,powershell,robocopy,start-job,scriptblock,Powershell,Robocopy,Start Job,Scriptblock,我想做一些简单的事情 我想创建一个robocopy作业,该作业将启动拷贝并检查$lastexitcode $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
$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,即使拷贝正常。
此外,该函数未执行(它在scriptblock之外工作)
有人知道我做错了什么吗
任何帮助都将不胜感激
谢谢 看看你的评论,猜想你已经成功了。如果我引用的链接被删除,下面是未来读者的答案。基本上,我们将start process命令分配给一个变量,并抛出
-passthru
标记,以便稍后轮询.exitcode
$A = Start-Process -FilePath .\my-app\my-fle.bat -Wait -passthru
$A.ExitCode
为什么不直接使用启动过程呢?e、 g.$robocopy=启动流程robocopy-argumentlist-passthru。这将返回一个具有HasExitd和ExitCode属性的流程对象,您可以检查它是否已完成以及退出代码是什么。下面是我如何从开始流程开始执行lastexitcode-嗨,首先感谢您的帮助!我曾尝试使用Knuckle Dragger显示的启动过程,但返回的退出代码始终为1。。。即使副本有效。我一定错过了什么。不,它工作得很好!ExitCode 0=没有错误,没有复制文件,因此ExitCode 1实际上是一件好事。ExitCode 1=无错误,已复制新文件。ExitCode>1=出现错误,或者至少出现意外结果。哦,好的,谢谢您的帮助:)非常感谢!