0

一部の DC を手動でバックアップするために、powershell スクリプトを作成しています。バックアップはあるフォルダーから別のフォルダーに移動する必要があり、Get-ChildItem -Filter "Backup*" を使用してバックアップ ファイルを選択し、robocopy を使用してそれらを移動しています。

動作しますが、ソースまたは宛先パスが正しくない場合、トラップとカスタム エラー メッセージ「XX から SystemStateBackup へのローカル バックアップのコピー中にエラーが発生しました」を追加したいと考えています。また、エラーをログ ファイルにパイプしたいと思います。

トラップのないオリジナルは

 Get-ChildItem f:\WindowsImageBackup\ITUPW-PRODDC7 -Filter "Backup*" -Name | ForEach-Object { 
 robocopy "f:\WindowsImageBackup\ITUPW-PRODDC7\$_" "f:\WindowsImageBackup\ITUPW-PRODDC7\SystemStateBackup\$_" /Z /S /MOVE /njh /njs /ndl /nc /ns /np /nfl}

コードの一部のみを使用する場合、トラップは機能します

Trap {"Error Copying Local Backup from XX to SystemStateBackup";Continue} Get-ChildItem f:\WindowsImageBackup\ITUPW-PRODDC7 -Filter "Backup*" -Name -ea "Stop"

しかし、それはこのように動作しません

Trap {"Error Copying Local Backup from XX to SystemStateBackup";Continue} Get-ChildItem f:\WindowsImageBackup\ITUPW-PRODDC7 -Filter "Backup*" -Name | ForEach-Object { 
robocopy "f:\WindowsImageBackup\ITUPW-PRODDC7\$_" "f:\WindowsImageBackup\ITUPW-PRODDC7\SystemStateBackup\$_" /Z /S /MOVE /njh /njs /ndl /nc /ns /np /nfl} -ea "Stop"

次のpowershellエラーが発生します

Get-ChildItem : 存在しないため、パス 'F:\WindowsImageBackup\ITUPW-PRODDC' が見つかりません。At line:1 char:88 + Trap {"Error Copying Local Backup from XX to SystemStateBackup";Continue} Get-ChildItem <<<< f:\WindowsImageBackup\I TUPW-PRODDC -Filter "Backup*" -Name | ForEach-Object { robocopy "f:\WindowsImageBackup\ITUPW-PRODDC7\$ " "f:\WindowsIma geBackup\ITUPW-PRODDC7\SystemStateBackup\$ " /Z /S /MOVE /njh /njs /ndl /nc /ns /np /nfl} -ea "Stop" + CategoryInfo : ObjectNotFound: (F:\WindowsImageBackup\ITUPW-PRODDC:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

アドバイスをいただければ幸いです。

ありがとうございました。

Amelia - 短いストローを描いたシステム管理者

4

1 に答える 1

0

-ea "Stop"Get-ChildItem ではなく foreach に適用しています。パイプの前に移動|

robocopy の場合、(foreach オブジェクト内で) $?orを使用して、正常に実行されたかどうかを確認することができます。$lastexitcode

于 2012-01-05T03:33:43.417 に答える