PowerShell 5.0 PathTooLongException Ошибка - PullRequest
0 голосов
/ 02 апреля 2020

Проблема

Получение PathTooLongException - ... полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов.

ОС

  • Windows Server 2008 R2 Enterprise

Версия PowerShell

  • PSVersion 5.1.14409.1018
  • BuildVersion 10.0.14409.1018
  • CLRVersion 4.0.30319.36543
  • WSManStackVersion 3.0
  • PSRemotingProtocolVersion 2.3
  • Сериализация 1030 *

. NET Версия FrameWork

  • 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 - Set-Location "далее в дерево папок" (ошибка)

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.

Любая помощь или идеи будут оценены.

1 Ответ

0 голосов
/ 08 апреля 2020

Я использую приведенный выше скрипт с PowerShell 7, и код может извлечь папки, в которых я получил ошибку LongPathException. Тем не менее, я получаю новую ошибку, для которой я опубликую еще один вопрос. Ответ, который я смог придумать и работает для моей проблемы, заключается в следующем. Мне удалось сосчитать более 145 000 папок в дереве папок L: \ Depts .

Ошибка сценария Ошибка

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...