Get-ADGroup使用变量替代字符串查询AD组无结果该如何解决
问题根因
你遇到的问题本质是ActiveDirectory模块的-Filter参数对脚本块格式的输入存在变量解析限制:脚本块内的$ADGroup不会按预期被替换为变量的实际值,相当于你在以变量字面量/空值查询,自然返回空结果。之前替换单引号没生效的原因是单引号包裹的内容不会触发PowerShell的变量展开机制,也无法把$ADGroup替换为实际值。
另外你当前代码同时定义了强制参数$ADGroup和后续的Read-Host赋值,后者会直接覆盖通过param传入的参数值,二者选其一使用即可,不要同时写。
正确实现方案
方案1:改用字符串格式的Filter(最常用,不易踩坑)
双引号包裹Filter字符串,触发变量自动展开:
param( [Parameter(Mandatory=$true)] [string]$ADGroup ) # 若使用Read-Host取值就注释掉上面的param块,取消注释下面这行 # $ADGroup = Read-Host "Enter Group Name" # 只需要Name属性无需加-Properties *,会大幅降低查询效率 Get-ADGroup -Filter "name -like '*$ADGroup*'" | Select-Object -Property Name
方案2:保留脚本块格式的Filter写法
先拼接带通配符的查询值,再传入脚本块:
$searchPattern = "*$ADGroup*" Get-ADGroup -Filter {name -like $searchPattern} | Select-Object -Property Name
内容的提问来源于stack exchange,提问作者djembeplayer
相关产品推荐
相关产品推荐

