powershell - PowerShell 中 Get-ADUser 多行筛选器的反引号

标签 powershell escaping multiline backticks

我在 PowerShell 中使用 Get-AdUser 命令在多行过滤器表达式中使用反引号(重音符号)时遇到问题。具体来说,我正在 Windows 7 上测试 PowerShell 2.0。

一个工作示例(过滤器全部位于一行):

Get-ADUser -Filter {Name -like "Smith*" -and Enabled -eq $True}
# This works as expected, a list of matching objects is returned on pipeline

一个损坏的示例(过滤器被分成多行):

Get-ADUser -Filter {Name -like "Smith*" `
-and Enabled -eq $True}
# Error message indicates "Operator not supported at position [of backtick]

第二个损坏的示例(反引号前带有 -and 的多行过滤器):

Get-ADUser -Filter {Name -like "Smith*" -and `
Enabled -eq $True}
#Error message indicates "Syntax error at position [of backtick]"

请提供解决方法的示例或解释不支持这些多行过滤器的原因。我无法弄清楚这个问题,但这似乎应该是 PowerShell 中一种简单且常见的操作类型。

最佳答案

我相信更有经验的人可以帮助解决这个问题,但是 PowerShell 似乎没有消耗这一行的反引号,因此它会将其发送到不喜欢它的 AD 过滤器解析器。我在 about_ActiveDirectory_Filter 中没有找到任何内容这就能准确地解释这一点。不过,反引号仍然用于转义字符。可能换行符被传递到 AD 过滤器解析器,但它不喜欢它。

我知道有效的解决方法是预先将脚本 block 构建到变量中并将其传递给 Get-Aduser

$sb = {
    Name -like "Matt*" -and
    Enabled -eq $True
}
Get-ADUser -Filter $sb

关于powershell - PowerShell 中 Get-ADUser 多行筛选器的反引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45740863/

相关文章:

bash - 带有双引号输入行的多行 CSV : output on a single line,,使用不同的分隔符

c# - 正则表达式匹配以提取多行文本区域 (C#)

powershell - 在Powershell中的一个zip文件中添加多个文件夹

azure - 如何在 Azure Function App 内的 PowerShell 脚本中获取 Azure AD 用户列表?

powershell - 将带引号的参数从批处理文件传递给 `powershell start` - 按需 self 提升

android - 设置 SupportActionBar 字幕多行

git - 如何使用 cli 获取当前分支的 Github 最新提交 url

xml - 从 XML 填充参数列表

javascript - Ruby 相当于 JavaScript 的 encodeURIComponent 产生相同的输出?

batch-file - 如何将用户输入的字符串与批处理文件中的特殊字符进行比较?