处理长路径的 Powershell 在一个系统上工作,但在另一个系统上不工作

Powershell dealing with long path works on one system , but not the other

系统不工作

路径以 \\?\C:\Users 开头...

copy-item -path $sf -Destination $tf

我收到以下错误消息

copy-item : 路径中有非法字符

我删除前导 \\?\ 它会停止抱怨。

压缩存档也有问题 我打电话 Compress-Archive -Path "\\?\$($RootDir...

它returns没有错误,但没有创建 zip 文件。

这是win 11 21H2

$PSVersionTable

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

适用于

的系统

这是win 10 21H2

$PSVersionTable

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

zett42的回复就是答案

启用长路径system-wide,因此您不再需要处理史前\?\前缀,而是可以使用普通路径:https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later – zett42