我正在起草一個powershell腳本來手動備份一些DC。備份需要從一個文件夾移動到另一個文件夾,我使用Get-ChildItem -Filter「Backup *」選擇備份文件,然後使用robocopy將其移動。Get-ChildItem -Filter和Robocopy的Powershell錯誤陷阱(ErrorAction)
它的工作原理,但我想添加一個陷阱和自定義錯誤消息「錯誤複製本地備份從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 +陷阱{ 「錯誤複製本地備份從XX到SystemStateBackup」;繼續}獲取-ChildItem < < < < F:\ WindowsImageBackup \我 TUPW-PRODDC -Filter 「備份*」 -Name | ForEach-Object {robocopy「f:\ WindowsImageBackup \ ITUPW-PRODDC7 \ $ 」「f:\ WindowsIma geBackup \ ITUPW-PRODDC7 \ SystemStateBackup \ $」/ Z/S/MOVE/njh/njs/ndl/nc/(F:\ WindowsImageBackup \ ITUPW-PRODDC:String)[Get-ChildItem],ItemNotFoun dException + FullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands。 GetChildItemCommand
任何意見將不勝感激。
謝謝你的時間。
阿梅利亞 - 一個系統管理員誰提請短稻草
您使用的是什麼版本的PowerShell。你可以通過鍵入'$ host'來判斷。 – 2012-01-05 03:04:33
你有沒有嘗試刪除-filter,只是使用Get-ChildItem「F:\ WindowsImageBackup \ ITUPW-PRODDC7 \ Backup *」 – 2012-01-05 03:23:22
嗨,安迪,我使用的版本2 – user1131196 2012-01-05 22:58:23