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

PowerShell中Get-ADUser用ANR搜索AD用户时$("smtp:$user")报错如何解决

报错原因

Get-ADUser的-Filter参数的脚本块语法仅支持简单的变量引用,不支持在脚本块内部执行子表达式计算、方法调用等复杂运算。你在Filter内写的$("smtp:$user")属于嵌套子表达式,AD PowerShell提供程序解析Filter时无法正确识别该表达式的计算结果,因此抛出参数无效的错误。

可行解决方案

你可以选择任意一种方式实现相同的检索需求:

方案1:提前计算查询值(推荐,可读性更高)

提前在Filter外部完成smtp前缀的拼接,避免在Filter内部做复杂运算:

# 先构造带smtp前缀的查询参数
$smtpQueryValue = "smtp:$user"
# 执行AD查询,需要返回邮箱字段可加上-Properties EmailAddress
Get-ADUser -Filter {(anr -eq $user) -or (anr -eq $smtpQueryValue)} -Properties EmailAddress

方案2:使用字符串格式Filter

直接使用字符串格式的Filter条件,变量可以直接在字符串内完成插值:

Get-ADUser -Filter "anr -eq '$user' -or anr -eq 'smtp:$user'" -Properties EmailAddress
补充说明

ANR(模糊名称解析)本身默认已经覆盖了姓名、SAM账号、显示名、邮箱前缀等常见属性的匹配,如果你需要额外匹配完整SMTP邮箱地址,加上smtp前缀的条件即可满足统一检索的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:33:01