2016-03-01 37 views
1

我正在使用powershell來複制文件夾和文件裏面。下面是一個使用如何在powershell中獲得詳細的異常

Copy-Item "C:\source" "C:\destination" -recurse 

我得到錯誤

Copy-Item : The specified path, file name, or both are too long. The fully qualified file name must be le characters, and the directory name must be less than 248 characters. At line:1 char:1 + Copy-Item "C:\source" "C:\destination" -recurse + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (component.json:FileInfo) [Copy-Item], PathTooLongException + FullyQualifiedErrorId : CopyDirectoryInfoItemIOError,Microsoft.PowerShell.Commands.CopyItemCommand

我理解錯誤的命令IM,但我想知道哪個文件有問題,所以我可以修復它。錯誤犯規顯示實際文件

我嘗試使用

$error[0]|format-list -force 

它顯示詳細的堆棧跟蹤,但它不顯示文件路徑

+1

您是否可以簡單地將'-Verbose'附加到您的'Copy-Item'命令,雖然它可能會有很多控制檯噪音,我希望您能夠在異常之前看到有問題的文件。 – ssaviers

回答

0

$error陣列由ErrorRecords。您可以通過以下方式查看ErrorRecord中的屬性和方法:$error|get-member。除其他事項外,您會看到ErrorDetails, Exception, and TargetObject屬性。在許多情況下,這些屬性中的一個或多個將具有額外的有用信息。

在你的情況下,TargetObject是一個不錯的選擇。我試圖複製一個不存在的文件在我的系統上,並且TargetObject被設置爲無效的文件名。要查看您可以使用:$error[0].TargetObject|select *

0

$error數組由ErrorRecords組成。您可以通過以下方式查看ErrorRecord中的屬性和方法:$error|get-member。除其他事項外,您會看到ErrorDetails, Exception, and TargetObject屬性。在許多情況下,這些屬性中的一個或多個將具有額外的有用信息。

在你的情況下,TargetObject是一個不錯的選擇。我試圖複製一個不存在的文件在我的系統上,並且TargetObject被設置爲無效的文件名。要查看您可以使用:$error[0].TargetObject|select *

我在我的配置文件中有一個腳本,輸出$error[0]以及上面列出的某些屬性。有時$error[0].exception會有一個「內部異常」,所以我的腳本會檢查是否存在並轉儲。