Длинный путь в powershell и .net - PullRequest
0 голосов
/ 06 июня 2019

Мы выполняем следующие команды

...
[System.IO.File]::WriteAllBytes($pathA, $data)
[System.IO.Compression.ZipFile]::ExtractToDirectory($pathA, $pathB)
// OR
Expand-Archive $pathA -DestinationPath $pathB

в Windows 10 Ent.x64 в версиях

Name                           Value
----                           -----
PSVersion                      5.1.17763.316
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.316
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Код работает, если $ pathB не окажется слишком длинным.Попробовал много предложений, найденных здесь

\\?\$pathB действительно работает в Проводнике, но в этом коде происходит сбой в ExtractToDirectory с

The filename, directory name, or volume label syntax is incorrect

и в Expand-Archive с

Cannot process argument because the value of argument "drive" is null.

Это не должно быть вопросом экранирования от обратной косой черты, если я удвою их, это даст мне

Illegal characters in path

Также попытался New-PSDrive, как в

New-PSDrive -Name "X" -PSProvider FileSystem -Root $pathBase

но я получаю

 A drive with the name 'X' does not exist.

Я прочитал, что ему нужно -Persist, что дает мне

 ...the root must be a file system location on a remote computer.

Пробовал

net use x: $pathBase
// OR
subst $pathBase "x:\"

Join-Path -Path "x:\" -ChildPath ...

и оба конца в

Cannot find drive. A drive with the name 'x' does not exist.

Являются ли какие-либо из них использованы неправильно?Если нет - что еще попытаться это исправить?
Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...