当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 支持 Cmdlet 参数中的通配符

作者:精品下载站 日期:2024-12-14 02:53:39 浏览:11 分类:玩电脑

支持 Cmdlet 参数中的通配符


通常,您必须设计一个 cmdlet 来针对一组资源而不是针对单个资源运行。例如,cmdlet 可能需要查找数据存储中具有相同名称或扩展名的所有文件。当设计将针对一组资源运行的 cmdlet 时,必须提供对通配符的支持。

笔记

使用通配符有时称为通配符

使用通配符的 Windows PowerShell Cmdlet

许多 Windows PowerShell cmdlet 支持其参数值使用通配符。例如,几乎每个具有 NamePath 参数的 cmdlet 都支持这些参数的通配符。 (尽管大多数具有 Path 参数的 cmdlet 也具有不支持通配符的 LiteralPath 参数。)以下命令显示如何使用通配符返回所有当前会话中名称包含 Get 动词的 cmdlet。

Get-Command get-*

支持的通配符

Windows PowerShell 支持以下通配符。

Wildcard Description Example Matches Does not match * Matches zero or more characters, starting at the specified position a* A, ag, Apple ? Matches any character at the specified position ?n An, in, on ran [ ] Matches a range of characters [a-l]ook book, cook, look nook, took [ ] Matches the specified characters [bn]ook book, nook cook, look

当您设计支持通配符的 cmdlet 时,请允许通配符的组合。例如,以下命令使用 Get-ChildItem cmdlet 检索 c:\Techdocs 文件夹中且以字母“a”到“l”开头的所有 .txt 文件。

Get-ChildItem c:\techdocs\[a-l]\*.txt

上一条命令使用范围通配符 [a-l] 指定文件名应以字符“a”到“l”开头,并使用 * 通配符作为文件名第一个字母和 .txt 扩展名之间的任何字符的占位符。

以下示例使用范围通配符模式,该模式不包括字母“d”,但包括从“a”到“f”的所有其他字母。

Get-ChildItem c:\techdocs\[a-cef]\*.txt

处理通配符模式中的文字字符

如果您指定的通配符模式包含不应解释为通配符的文字字符,请使用反引号字符 (`) 作为转义字符。当您在 PowerShell API 中指定文字字符时,请使用单个反引号。在 PowerShell 命令提示符处指定文字字符时,请使用两个反引号。

例如,以下模式包含两个必须按字面意思理解的括号。

在 PowerShell API 中使用时使用:

  • “约翰·史密斯`[*`]”

从 PowerShell 命令提示符使用时:

  • “约翰·史密斯``[*``]”

此模式与“John Smith [营销]”或“John Smith [开发]”匹配。例如:

PS> "John Smith [Marketing]" -like "John Smith ``[*``]"
True

PS> "John Smith [Development]" -like "John Smith ``[*``]"
True

Cmdlet 输出和通配符

当 cmdlet 参数支持通配符时,该操作通常会生成数组输出。有时,支持数组输出是没有意义的,因为用户可能只使用单个项目。例如,Set-Location cmdlet 不支持数组输出,因为用户仅设置单个位置。在这种情况下,cmdlet 仍然支持通配符,但它强制解析到单个位置。

参见

编写 Windows PowerShell Cmdlet

通配符模式类

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯