2016-01-13 36 views
0

对不起,我是PowerShell的新手。我正在运行一个脚本,它执行一些命令来复制系统中的文件。有没有办法在移动到下一个命令之前捕获命令的状态是否成功完成?检查命令执行成功的状态

例如:

$scp_cmd = "scp.exe -a [email protected]:/files/repo1 /repo1" 
$rsync_cmd = "rsync.exe -tvP [email protected]:/files/repo2 /repo2" 
Invoke-Expression $scp_cmd 

# How do we check whether the command completed successfully? 

Invoke-Expression $rsync_cmd 

# How do we check whether the command completed successfully? 
+0

你应该使用try {调用,表达$ scp_cmd},例子是:尝试{事} 赶上{ “发生错误”} 如果($错误){ “没有错误发生” } –

+0

感谢Niklas。我正在通过退出代码,这是可能的使用PowerShell退出代码?例如,当命令执行时,PowerShell会知道该命令是否返回了特定的代码? – user3331975

+0

不确定你是否确切地想要你的意思,你可以在代码中使用exit。(0)来结束0作为退出代码的脚本,但是我不知道它自己的命令是否可以用“errorcode”其他然后0或1,具体取决于错误或没有,你可以尝试一些我在另一个脚本中使用了一次: $安装=开始处理-FilePath“CitrixReceiver.exe” $结果= $ install.Exitcode 你可以尝试在这个例子中用$ install调用invoke-expression。它可能只适用于启动过程,我不确定 –

回答

1

使用$LASTEXITCODE automatic variable。它的工作原理都与Invoke-Expression&调用操作:

$rsync_cmd = "rsync.exe -tvP [email protected]:/files/repo2 /repo2" 
Invoke-Expression $rsync_cmd 

if($LASTEXITCODE) 
{ 
    # exit code from rsync was not 0 
} 
相关问题