Компьютер, на котором я запускаю скрипт, - это PS5, но это очень маловероятно на машинах, на которых размещена общая папка. Моя следующая попытка возвращает ошибку: Недопустимые символы в пути. Get-ChildItem -LiteralPath "\\? \ UNC \ somesever \ myshare $ \ folder1 \ folder2 \ folder3" -Recurse -Directory

ользую глубокую структуру папок, чтобы получить все пути к папкам, например:

$subFolders = Get-ChildItem $rootFolder -Recurse -Directory  -ErrorVariable folderErrors | Select-Object -ExpandProperty FullName

ПРИМЕЧАНИЕ: $ rootFolder в моем случае является сетевым ресурсом. Т.е. "\\ server \ DeptDir $ \ somefolder"

$folderErrors переменная корректно фиксирует все исключения FileTooLong, поэтому я хочу создать новые PSDrive, используя длинные пути, чтобы рекурсировать эти длинные пути.

Поэтому я создаю новый PSDrive с помощью этого командлета:

new-psdrive -Name "long1" -PSProvider FileSystem -Root $folderErrors[0].CategoryInfo.TargetName

Однако после создания нового PSDrive я все еще получаю исключения PathTooLong.

PS C:\>> cd long1:
PS long1:\>> dir
dir : 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:1
+ dir
+ ~~~
    + CategoryInfo          : ReadError: (\\svr01\Dep...\Fibrebond ECO\:String) [Get-ChildItem], PathTooLongException
    + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand

Я не вижу другого пути решения этой проблемы. Я что-то делаю неправильно? Почему новый PSDrive выбрасывает PathTooLong, когда я создаю диск в месте, где путь слишком длинный?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос