使用长文件路径时的 Get-ChildItem 错误处理

Ben*_*rup 2 powershell

我试图在扫描文件夹时处理错误。假设我有类似的东西:

Get-ChildItem $somepath -Directory | ForEach-Object {
   if(error occurred due to too long path) {
        skip this folder then
   } else {
       Write-Host $_.BaseName
   }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我会打印文件夹,$somepath直到其中一个太长,然后循环停止。即使在使用SilentlyContinue. 即使到达太长的文件夹后,我也想打印。

wOx*_*xOm 5

如果您可以安装非古老的 ​​PowerShell 版本(3.0 或更高版本),只需在路径前面加上\\?\即可克服完整路径的 260 个字符限制:

Get-ChildItem "\\?\$somepath" | ForEach {
    # ............
}
Run Code Online (Sandbox Code Playgroud)

  • 可能是我的无知,但我在运行时遇到错误:`路径中的非法字符。`或`无法检索 cmdlet 的动态参数。`... (2认同)