2016-01-13 71 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 
}