我正在起草一个 powershell 脚本来手动备份一些 DC。备份需要从一个文件夹移动到另一个文件夹,我使用 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”,因为它不存在。在 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], ItemNotFoun dException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
任何建议将不胜感激。
谢谢你的时间。
Amelia - 一个抽到最后一根稻草的系统管理员