PowerShell调用Get-ADUser -Filter参数无返回结果问题求助
问题原因
故障出在-Filter参数的引号写法上:PowerShell中单引号包裹的字符串是纯字面量,不会解析内部的变量,你写的-Filter 'Name -like "*$param1*"'运行时,不会把$param1替换为传入的实际参数值,而是直接把字符串*$param1*作为匹配条件查询AD,自然匹配不到任何结果,也不会触发报错。
你测试的-Identity "$args"版本能正常运行,是因为$args直接放在双引号字符串中可以被正常解析,且-Identity参数本身支持精准匹配用户标识,不需要额外的Filter语法解析。
修正方案
把Filter参数的外层引号换成双引号(支持变量解析),内部匹配规则的字符串用单引号包裹即可,修正后的完整脚本:
$param1=$args[0] Get-ADUser -Filter "Name -like '*$param1*'" -Properties LastLogonDate,PasswordLastSet | ft Name,SamAccountName,LastLogonDate,PasswordLastSet
补充说明
PowerShell引号规则可简单记为:
- 单引号
':内容原样传递,不解析变量、不处理转义字符 - 双引号
":自动解析内部的变量、转义序列,适合需要动态传值的场景 - 写多层嵌套的查询条件时,注意引号层级搭配,避免出现变量不解析的问题
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

