Я пишу сценарий 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', так как он не существует.
В строке: 1 символ: 88
+ Trap {"Ошибка копирования локальной резервной копии из XX в SystemStateBackup"; Продолжить} Get-ChildItem <<<< f: \ WindowsImageBackup \ I
TUPW-PRODDC -Фильтр "Резервное копирование *" -Название | ForEach-Object {robocopy "f: \ WindowsImageBackup \ ITUPW-PRODDC7 \ $ <em>" "f: \ WindowsIma
geBackup \ ITUPW-PRODDC7 \ SystemStateBackup \ $"/ Z / S / MOVE / njh / njs / ndl / nc / ns / np / nfl} -ea" Стоп "
+ CategoryInfo: ObjectNotFound: (F: \ WindowsImageBackup \ ITUPW-PRODDC: String) [Get-ChildItem], ItemNotFoun
dException
+ FullyQualifiedErrorId: PathNotFound, Microsoft.PowerShell.Commands.GetChildItemCommand
Любой совет будет принят с благодарностью.
Спасибо, что уделили время.
Амелия - системный администратор, который нарисовал короткую соломинку