0

问题

接收 PathTooLongException - ... 完全限定的文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。

操作系统

  • Windows Server 2008 R2 企业版

PowerShell 版本

  • PS版本 5.1.14409.1018
  • 构建版本 10.0.14409.1018
  • CLRVersion 4.0.30319.36543
  • WSManStackVersion 3.0
  • PSRemotingProtocolVersion 2.3
  • 序列化版本 1.1.0.1

.NET 框架版本

  • 4.5.51209

代码

Get-ChildItem -Path $path -Directory -Recurse | Get-ACL
ForEach ($item in $pathmany) {
        $permissions = $item.access | where {$_.IdentityReference -like "*$target*"}
        $permissions.FullPath | where {$_.IdentityReference -like "*$target*"}
        if ($permissions.IdentityReference -like "*$target*") {
            $path = $item.Path.trim('Microsoft.PowerShell.Core\FileSystem::')
        }
}

到目前为止我尝试过的

1 - 设置位置“进一步进入文件夹树”(错误)

2 - Subst TEMP“文件夹进一步进入文件夹树”(错误)

3 - \计算机名\“文件夹进一步进入文件夹树”\(错误)

4 - 使用 2019 服务器,我可以将注册表编辑为“LongPathsEnabled = 1”,我还尝试使用 \?\UNC\ 方法并返回相同的错误。

也试过这段代码,仍然得到错误

$folder = @{ Name = "\\?\UNC"}
$folder.path = "folder further into folder tree"

$folder | ForEach-Object {
     $item = Get-ChildItem -Path $_.Path -Directory -Recurse | Get-ACL
}

询问我的主管是否可以升级到 PowerShell 6.0 或 7.0。

任何帮助或想法将不胜感激。

4

1 回答 1

0

我将上述脚本与 PowerShell 7 一起使用,并且代码能够检索出现 LongPathException 错误的文件夹。但是,我收到一个新错误,我将发布另一个问题。我能够提出并解决我的问题的答案如下。我能够在文件夹树L:\ Depts 中计算 145,000 多个文件夹。

脚本问题错误

Get-ChildItem -Path "L:\Depts" -Directory -Recurse

安装 PowerShell 7.0 将更正错误

Get-ChildItem : 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.
于 2020-04-08T13:00:02.880 回答