在Windows Server 2008 R2 VM上,我將PowerShell升級到v3,希望利用Get-ChildItem(gci)的性能提升。此行在v2中無誤地運行:PathTooLong在PowerShell v3中的Get-ChildItem錯誤,但不是v2
$search = gci $dir -recurse -exclude "*.mdf" | where {$_.length -gt 100mb}
升級到v3後,爲什麼同一行會出現此錯誤? $dir
值不變。
gci : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. At line:1 char:11 + $search = gci $dir -recurse -exclude "*.mdf" | where {$_.length -gt 100mb} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ReadError: (\server.domain...DETAILS 1.0.prt:String) [Get-ChildItem], PathTooLongException + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
應用Windows更新並重新啓動後沒有變化。我在升級PowerShell之前拍攝了VM的快照,因此我可以輕鬆地來回切換。
$errorActionPreference
是在v2和v3中的Continue
。
$search.count
在v2和v3中都是8,所以我不是超級關心丟失的東西,但想了解行爲的變化。
我試圖在V2 addding -force
,看到類似的PathTooLong錯誤,.count
是10. V3添加-force
後,.count
是9然後我恢復了v2和再次發現10個文件與-force
。這仍然可能是$dir
在不斷變化的數據可以解釋.count
差異,但在我們的環境,不斷變化的數據不能真實地解釋PathTooLong錯誤的V3一貫存在,但不是V2。現在我的好奇心已經越來越好了,我希望有人在這個謎團中領先一步,並且會讓我處理錯誤處理,我承認,這可能會提供更多線索。
FWIW,在usage documentation on TechNet說,它適用於v2和v3。 -Force
參數的默認值爲False。
Some background從PowerShell和MAX_PATH
從v1天。
在Windows Server 2008 R2 VM上,我將PowerShell升級到v3,希望利用Get-ChildItem(gci)的性能提升。此行在v2中無誤地運行:
$search = gci $dir -recurse -exclude "*.mdf" | where {$_.length -gt 100mb}
升級到v3後,爲什麼同一行會出現此錯誤? $dir
值不變。
gci : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. At line:1 char:11 + $search = gci $dir -recurse -exclude "*.mdf" | where {$_.length -gt 100mb} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ReadError: (\server.domain...DETAILS 1.0.prt:String) [Get-ChildItem], PathTooLongException + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
應用Windows更新並重新啓動後沒有變化。我在升級PowerShell之前拍攝了VM的快照,因此我可以輕鬆地來回切換。
$errorActionPreference
是在v2和v3中的Continue
。
$search.count
在v2和v3中都是8,所以我不是超級關心丟失的東西,但想了解行爲的變化。
我試圖在V2 addding -force
,看到類似的PathTooLong錯誤,.count
是10. V3添加-force
後,.count
是9然後我恢復了v2和再次發現10個文件與-force
。這仍然可能是$dir
在不斷變化的數據可以解釋.count
差異,但在我們的環境,不斷變化的數據不能真實地解釋PathTooLong錯誤的V3一貫存在,但不是V2。現在我的好奇心已經越來越好了,我希望有人在這個謎團中領先一步,並且會讓我處理錯誤處理,我承認,這可能會提供更多線索。
FWIW,在usage documentation on TechNet說,它適用於v2和v3。 -Force
參數的默認值爲False。
Some background從PowerShell和MAX_PATH
從v1天。
你可以使用這個.net程序集http://alphafs.codeplex.com/來避免'PathTooLongException' –