【问题标题】:Select-String -Pattern Wildcard Match选择字符串模式通配符匹配
【发布时间】:2022-01-27 17:38:49
【问题描述】:

我在一个文件夹中有多个.ps1 脚本,示例文件内容如下所示:

file1.ps1
# Do stuff
Get-Acl -Path HKLM:\

file2.ps1
# Do stuff
Get-ADUser -Identity TestUser

使用命令Select-String 我只想查找带有 AD cmdlet 的 .ps1 脚本,例如Get-ADUserGet-ADGroup 等。示例:

Get-ChildItem -Path C:\MyScripts | Select-String -Pattern "Get-AD*"

这会返回 file1.ps1 和 file2.ps1,预期的输出是 file2.ps1 only

我做错了什么?

【问题讨论】:

  • Get-AD*更改为Get-AD\w+

标签: regex powershell


【解决方案1】:

Select-String 使用正则表达式,而不是通配符模式,在这种情况下,* 表示“前一个元素的 0 个或多个” - 所以它正在寻找文字字符串 Get-A 后跟 0 个或多个 D的 - 和 Get-Acl 确实满足这个约束。

要描述以Get-AD 开头的子字符串,后跟更多字母,您可以这样做:

Get-ChildItem -Path C:\MyScripts | Select-String -Pattern "Get-AD\p{L}+"

\p{L} 描述任何字母+ 表示“前一个元素的1 个或多个”,因此Get-AD 后跟1 个或多个字母。

【讨论】:

    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    相关资源
    最近更新 更多