小议Test-Path参数IsVaild的使用限制

原创 2007年09月25日 17:57:00

作者: Edengundam(马涛)

之前, 我曾经翻译过一个cmdlet命令: Test-Path, 这个命令用于确定路径的所有元素是否存在。今天, 我们主要查看一下该命令的参数IsValid.
首先, 我们先看下这个参数的描述:

-isValid <SwitchParameter>
    确定路径的语法是否正确(不管路径的元素是否存在)。如果路径语法有效,则返回 True;如果其无效,则返回 False。

注意这里<SwitchParameter>意味着此参数不需要指定任何参数值(argument). 先让我们看几个例子:

PS C:Scripts>   Test-Path c: -isValid  # 我们期待这是个正确的目录
True

PS C
:Scripts>   Test-Path c:]] -isValid  #这也是个正确的目录
True

PS C
:Scripts>   Test-Path c:/ -isValid  #这个正确嘛?有疑问??
True

PS C
:Scripts>   Test-Path / -isValid   #这个呢?看起来不像正确的.
False

PS C
:Scripts>   Test-Path z/ -isValid  #这个肯定错了吧!
True

PS C
:Scripts>   Test-Path z/// -isValid  #这个鬼东西...错了!
True

PS C
:Scripts>   Test-Path a-isValid   #看起来挺对的
True

怎么样, 这些结果是不是让你觉得很郁闷, 明明有些路径根本就是非法的, 为什么还会返回正确的结果呢??这是由于Test-Path只是简单的查看路径名中是否存在非法的字符. 请看下面的例子:

PS C:> Test-Path z/ -isValid -PathType Leaf
True
PS C
:> Test-Path z/ -isValid -PathType container
True
PS C
:scripts> New-Item z/ -ItemType container


    目录
: Microsoft.PowerShell.CoreFileSystem::C:scripts


Mode                LastWriteTime     
Length Name
----                -------------     ------ ----
d
----         2007-9-25     17:49            z

经过确认'z///'是合法路径后, 我们调用New-Item创建目录'z///', 结果只创建了目录'z'. 也许这是此命令的一个缺陷, 希望PowerShell的下个版本能让它按照我们期待的运行.
不过我个人觉得, 其实不管如何, 我们直接去尝试创建目录即可, 然后只需要使用trap捕获异常事件即可. 最后, 附赠一个小脚本, 可以输出ASCII码0-127中, 哪些字符禁止出现在路径中.

PS C:scripts> 32..127 | ?!(Test-Path -Path "$([char]$_)" -IsValid) } | %{ [char]$_ }
"
*
:
<
>
?
|

这里我省略了0-31的字符, 有兴趣的朋友可以自己试试^^
 

相关文章推荐

javascript中apply使用方法小议

javascript中apply使用方法小议------(函数的劫持与对象的复制) 关于对象的继承,一般的做法是用复制法: Object.extend javascript中apply使用方法小议...

小议ASP.NET模板引擎技术的使用

http://developer.51cto.com/art/200910/155190.htm 我们将从PHP模板引擎技术谈谈ASP.NET模板引擎技术,希望通过本文的实例和代码,能让大家...

Spring Boot使用方法小札(5):小议Spring的拦截器

在Spring Boot中我们可以使用Java Web中原生的Filter API,但是这样很是别扭,尤其对于我这种有精神洁癖的人,既然使用了Spring的技术,就想完全使用它的,不想混杂别的,在Sp...

js中apply使用方法小议

之一------(函数的劫持与对象的复制)关于对象的继承,一般的做法是用复制法: Object.extend 见protpotype.js 的实现方法: Object.e...
  • bob007
  • bob007
  • 2011年06月17日 00:29
  • 293

小议电子商务与信息安全

  • 2008年12月20日 10:20
  • 33KB
  • 下载

小议光纤通信技术的发展及前景

  • 2013年07月03日 10:39
  • 343KB
  • 下载

Google Test(GTest)使用方法和源码解析——参数自动填充技术分析和应用

本文介绍了GTest参数自动填充技术分析和应用。

C#128打印方法小议 源代码

  • 2016年12月17日 14:31
  • 50KB
  • 下载

小议iOS内存管理-中文.pdf

  • 2012年02月03日 16:51
  • 533KB
  • 下载

Round C APAC Test 2017 Problem B. Monster Path

Problem B. Safe Squares Codejamon trainers are actively looking for monsters, but if you are not a ...
  • ywcpig
  • ywcpig
  • 2016年10月04日 16:13
  • 265
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:小议Test-Path参数IsVaild的使用限制
举报原因:
原因补充:

(最多只允许输入30个字)