Get-ChildItem无法使用长UNC路径

时间:2013-11-04 17:12:23

标签: powershell path unc get-childitem

我尝试在Powershell中使用Get-ChildItem的长UNC路径,如

Get-ChildItem -Path "\\?\c:\blabla"

和Powershell说道路上有非法字符。完全相同的路径适用于Resolve-Path。如何在gci使用“\\?\”语法?

3 个答案:

答案 0 :(得分:1)

我似乎无法找到适用于?的咒语。但是,以下工作可行:

gci '\\localhost\C$\'
gci ('\\{0}\C$\' -f $ENV:COMPUTERNAME)

更新: 参考:UNC path does not work with .NET?

\\?\部分是特定于Windows的,与powershell中的--%基本相同,也就是说'此后的所有内容都是文字字符串'

示例:

$LongUncPath = '\\?\C:\'
Get-ChildItem -Path:$LongUncPath.TrimStart('\\?\')

答案 1 :(得分:0)

我发现我的路径末尾有不可打印的字符。我通过使用trim()删除它们来纠正“路径中的非法字符”。

$ path.trim()

答案 2 :(得分:0)

好消息! PowerShell v6.0.0-beta.3及更高版本现在默认支持UNC路径;它自动将UNC字符串预先添加到路径> 260个字符:

https://github.com/PowerShell/PowerShell/releases/tag/v6.0.0-beta.3 https://github.com/PowerShell/PowerShell/pull/3960 https://github.com/PowerShell/PowerShell/pull/3960/files/3e7e28d49f306ab4874e32cf10eabb43559dae26#diff-52b1a915619c71b288b3f92f944924c4

  

修复PowerShell Core以允许使用超过260个字符的长路径。 (#3960)

     

...

     

调用Windows本机API以确定某个项是否存在时,请确保该路径前面带有\?\以允许路径> 260个字符。

您只需下载该版本或更高版本(通过PowerShell标记)。我刚刚将用于Windows x64的v6.0.0-beta.9下载到我的Windows 10计算机上并进行了测试,创建了一个包含460个字符的路径!