我在服务器上有一个名为MyFolder的文件夹.还有一些名为MyFolder.1,MyFolder.2,MyFolder.3等的文件夹.
如果我跑:
gci C:\Sample | ? { $_.Name -like "MyFolder.*" }
Run Code Online (Sandbox Code Playgroud)
我得到了预期的输出:
Directory: C:\Sample
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 16/10/2012 12:16 MyFolder.1
d---- 16/10/2012 12:16 MyFolder.2
d---- 16/10/2012 12:16 MyFolder.3
Run Code Online (Sandbox Code Playgroud)
但是如果我跑:
gci C:\Sample -Filter "MyFolder.*"
Run Code Online (Sandbox Code Playgroud)
我明白了:
Directory: C:\Sample
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 16/10/2012 12:16 MyFolder
d---- 16/10/2012 12:16 MyFolder.1
d---- 16/10/2012 12:16 MyFolder.2
d---- 16/10/2012 12:16 MyFolder.3
Run Code Online (Sandbox Code Playgroud)
我对MyFolder如何包含在输出中感到困惑.我希望输出是一样的.
该在线帮助突出了过滤器的语法是基于供应商,但我不能确定在这种情况下使用什么样的供应商.
我在这里错过了一个基本的知识吗?我试图将一个正则表达式字符串传递给过滤器,"MyFolder\.*"但这只是没有返回任何内容.我确定我错过了一些简单的事情.
我正在运行Powershell版本2.
感谢Roman Kuzmin指出了通配符匹配的不同之处.以下给出了预期的输出:
gci …Run Code Online (Sandbox Code Playgroud)