一部の 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 - 短いストローを描いたシステム管理者