[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[转载教程] PowerShell 技能连载 - 请注意 UNC 路径!

原始链接:PowerShell 技能连载 - 请注意 UNC 路径!
发表日期:2014-08-04


适用于所有 PowerShell 版本

许多 cmdlet 可以处理 UNC 路径,但是使用 UNC 路径会导致很多古怪的情况。请看以下:
  1. PS> Test-Path -Path \\127.0.0.1\c$
  2. True
复制代码
这段代码返回了 `true`,该 UNC 路径存在。现在将当前驱动器变为一个非文件系统驱动器,然后再次实验:
  1. PS> cd hkcu:\
  2. PS> Test-Path -Path \\127.0.0.1\c$
  3. False
复制代码
同样的路径现在返回了 `false`。这是因为 UNC 路径并不包含驱动器号,而 PowerShell 需要驱动器号来指定正确的提供器。如果一个路径不包含驱动器号,那么 PowerShell 假设使用当前驱动器的提供器。所以如果您将当前的目录改为注册表,PowerShell 尝试在那儿查找 UNC 路径,那么就会失败。

更糟糕的是,出于某些未知的原因,但您用 `net use` 来映射驱动器时,PowerShell 在使用 cmdlet 来访问驱动器时可能会也可能不会产生混淆。

解决方案十分简单:当您用 cmdlet 访问 UNC 时,始终在 UNC 路径前面加上正确的提供器名称。这将消除该问题:
  1. PS> Test-Path -Path FileSystem::\\127.0.0.1\c$
  2. True
  3. PS> cd hkcu:\
  4. PS> Test-Path -Path \\127.0.0.1\c$
  5. False
  6. PS> Test-Path -Path FileSystem::\\127.0.0.1\c$
  7. True
复制代码
如果您遇到了 `net use` 产生的问题,也可以使用同样的办法,在路径前面加上 `“FileSystem::`。该问题可以立刻得到解决。


本文国际来源:Watch Out With UNC Paths!
PowerShell 群:271143343

返回列表