【发布时间】:2012-01-05 02:22:15
【问题描述】:
我正在起草一个 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”,因为它不存在。 在行:1 字符:88 + Trap {"将本地备份从 XX 复制到 SystemStateBackup 时出错";继续} Get-ChildItem " "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 d异常 + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
任何建议将不胜感激。
感谢您的宝贵时间。
Amelia - 一个抽到最后一根稻草的系统管理员
【问题讨论】:
-
您使用的是什么版本的 PowerShell。你可以通过输入
$host来判断。 -
您是否尝试过删除 -filter 并仅使用 Get-ChildItem "F:\WindowsImageBackup\ITUPW-PRODDC7\Backup*"
标签: powershell robocopy get-childitem powershell-trap