2012-01-05 31 views
0

我正在起草一個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

任何意見將不勝感激。

謝謝你的時間。

阿梅利亞 - 一個系統管理員誰提請短稻草

+0

您使用的是什麼版本的PowerShell。你可以通過鍵入'$ host'來判斷。 – 2012-01-05 03:04:33

+0

你有沒有嘗試刪除-filter,只是使用Get-ChildItem「F:\ WindowsImageBackup \ ITUPW-PRODDC7 \ Backup *」 – 2012-01-05 03:23:22

+0

嗨,安迪,我使用的版本2 – user1131196 2012-01-05 22:58:23

回答

0

你所申請的-ea "Stop"到的foreach,而不是到Get-ChildItem。在管道前移動它|

對於robocopy,您可能想要使用$?$lastexitcode(在foreach對象內)來查看它是否運行正常。

+0

謝謝。我可以在沒有robocopy的情況下爲Get-ChildItem獲取陷阱。有人可以請告訴我如何把這個功能,所以我可以申請'-ea'停止''兩個? – user1131196 2012-01-05 06:59:22

+0

@ user1131196 - 你沒看過我答案中的第二段嗎? – manojlds 2012-01-05 07:06:38