首页 > 解决方案 > 测试路径 -isValid 在 UNC 根共享上失败

问题描述

无论实际存在如何,我都需要能够测试路径的有效性。我的函数用于验证用户提供的路径,该路径可能是本地驱动器,可能是 UNC 路径,也可能是注册表路径。然后,该路径可以用作创建新文件夹、删除路径、作为副本的源或目标等的位置 Test-Path $path -isValid,但有一个例外,当路径是 UNC 共享的根目录时。所以当$path = '\\Server\Folder'我得到真实的时候,但当$path = '\\Server'我得到错误的时候,即使\\Server是一条完全有效的路径。我发现建议使用([System.Uri]$path).IsUnc但返回 true 时$path = '\\Px\Folder\|'这实际上是一条完全无效的路径。我可能可以扩展我的逻辑来测试路径是否实际上是共享根,然后以不同的方式处理事情,但我想知道我是否遗漏了一些内置的解决方案,这些解决方案实际上可以像我预期Test-Path -isValid的那样适用于所有情况。在我正在测试的 PS 5.1 中这仍然被破坏的事实有点令人失望。或者我是否遗漏了一些东西并且没有理性的人想要测试\\Server为有效路径,因为没有人会将文件复制到这样的路径,或者在那里创建一个文件夹?这当然是一个修辞方程式和讽刺,我有很多次需要这样做,因此尝试将这些事情自动化。

稍微切线,是否有一个公认的 RegEx 用于验证 UNC 路径,可以适当地处理无效字符?如果我有一组 RegEx 表达式,以便我可以识别本地路径、UNC 路径或注册表路径,然后验证每个不允许的字符,那可以工作。

编辑:我是个白痴。$path = '\\Server'不是有效路径,您需要服务器和共享来定义有效路径。那会教我在累的时候做 RegEx 的东西。

标签: powershellunc

解决方案


推荐阅读