2017-02-10 22 views
0

PowerShell内でrobocopyを使用していて、ファイルが正常にコピーされた場合はrobocopyが終了コード1を返します。これはPowerShellに失敗したことを通知します。それはエラーではないので、エラーを無視する良い習慣はありますか?終了コードを無視するPowerShellを取得しますか?

$source = "$env:buildlocation\Reports\$env:ctrelname\DiskImages\DISK1"; 
$target = "$env:builddestination\$env:ctrelver\$env:ctrelname\Reports"; 
$robocopyOptions = @('/e', '/r:0', '/np'); 
Get-ChildItem -Path $source -Directory -Attributes !Hidden | 
    Sort-Object -Property CreationTime | 
    ForEach-Object { & robocopy.exe $source $target $robocopyOptions }; 
echo $LASTEXITCODE 
+0

例えば[この質問](http://stackoverflow.com/questions/13883404/custom-robocopy-progress-bar-in-powershell)を参照してください。 – sodawillow

+1

なぜそれが必要でしょうか?終了コードを明示的に処理しない限り、外部コマンドの終了コードはPowerShellとは関係ありません。 –

答えて

0

上記のとおり、PowerShellはネイティブコマンドのエラーコードを評価しません。 $LastExitCodeにしか保存されません。この単純な例を試してみてください。

Invoke-Expression 'cmd /c "exit 5"' 

PowerShellは$LastExitCodeに5を格納します。

関連する問題