You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Powershell Get-ADUser -Filter 变量搭配通配符的正确引号引用问题

PowerShell Get-ADUser 模糊查询语法问题解决方案

问题根因

你遇到的两个报错/无结果的原因分别是:

  • 第一种写法错误:AD Filter 要求 like 后的匹配模式必须是带引号的字符串类型,你直接输出了*Doe*John*没有包裹引号,触发语法错误。
  • 第二种写法错误:PowerShell 单引号包裹的内容不会解析内部变量,所以$LastADname、$FirstADname没有被替换为实际值,导致查询无结果。
    额外注意:你示例代码中的变量名存在拼写错误$FistADname,正确应为$FirstADname,请先修正避免变量为空导致的查询异常。

可行解决方案

方案1:双引号嵌套单引号(最简便)

外层用双引号包裹整个Filter规则,保证内部变量可以正常解析,内层用单引号包裹通配符匹配字符串即可:

$LastADname = "John"
$FirstADname = "Doe"
Get-ADUser -Filter "Name -like '*$LastADname*$FirstADname*'"

方案2:提前拼接匹配规则(可读性更高)

先单独拼接好带通配符的匹配字符串,再传入Filter规则,适合复杂过滤场景,减少引号嵌套混乱:

$LastADname = "John"
$FirstADname = "Doe"
$matchStr = "*$LastADname*$FirstADname*"
Get-ADUser -Filter "Name -like '$matchStr'"

方案3:脚本块格式写Filter

直接用脚本块语法定义Filter,不需要处理引号嵌套问题,变量可正常解析:

$LastADname = "John"
$FirstADname = "Doe"
Get-ADUser -Filter {Name -like "*$LastADname*$FirstADname*"}

额外注意事项

如果查询的姓名中包含单引号,需要提前转义避免语法错误,转义方式为将单引号替换为两个单引号:

# 示例:姓名含单引号的处理
$LastADname = $LastADname.Replace("'","''")

内容的提问来源于stack exchange,提问作者Slippy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:30:02