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

如何修复PowerShell中搜索数组内ADGroups的代码语法问题?

修复Active Directory组搜索的PowerShell过滤器语法错误

问题出在第13行的-In过滤器语法上:直接将数组$ADGroups嵌入字符串时,PowerShell会把数组转换成空格分隔的字符串(比如'Remote Desktop Users M365 Migration'),这完全不符合Active Directory过滤器的语法要求——-In运算符需要的是括号包裹、逗号分隔的单引号字符串列表。

修复方案

有两种简洁的解决方式:

方式1:使用脚本块过滤器(推荐)

AD模块支持直接传入脚本块作为-Filter参数,PowerShell会自动将其转换为符合要求的LDAP过滤器,无需手动拼接字符串:

If(Get-ADGroup -Filter { Name -in $ADGroups }) {
    Write-Host 'ADGroups found:'
    Get-ADGroup -Filter { Name -in $ADGroups } | ForEach-Object {
        Write-Host $_.Name -ForegroundColor Green
    }
}

注:这里把直接输出对象的逻辑改成了循环输出组名,避免显示杂乱的对象属性信息。

方式2:手动拼接正确的过滤器字符串

如果偏好字符串格式的过滤器,可以手动构造符合AD要求的-In列表:

# 将数组元素转换为单引号包裹的字符串,再用逗号连接
$formattedGroups = $ADGroups | ForEach-Object { "'$_'" } -join ','
$adFilter = "Name -In ($formattedGroups)"

If(Get-ADGroup -Filter $adFilter) {
    Write-Host 'ADGroups found:'
    Get-ADGroup -Filter $adFilter | ForEach-Object {
        Write-Host $_.Name -ForegroundColor Green
    }
}

为什么之前的-Like尝试无效

-Like运算符不支持直接匹配数组,且同样存在数组被转换为空格分隔字符串的问题,导致过滤器语法完全不符合要求,自然无法生效。

修改后的完整代码

Clear-Host

Import-Module ActiveDirectory

$ErrorView = 'CategoryView'

Write-Host 'Searching for ADGroups...'

$ADGroups = @('Remote Desktop Users', 'M365 Migration')

# 使用脚本块过滤器修复第13行的问题
If(Get-ADGroup -Filter { Name -in $ADGroups }) {
    Write-Host 'ADGroups found:'
    Get-ADGroup -Filter { Name -in $ADGroups } | ForEach-Object {
        Write-Host $_.Name -ForegroundColor Green
    }
}
Else {
    Write-Host 'No ADGroups found' -ForegroundColor Red
}

If(Get-ADGroup -Filter "Name -Eq 'Remote Desktop Users'") {
    Write-Host 'Searching for RDLicenseConfiguration...'
    Write-Host (Get-RDLicenseConfiguration -ErrorAction Continue) -ForegroundColor Green

    Write-Host 'Searching for RDDeploymentGatewayConfiguration...'
    Write-Host (Get-RDDeploymentGatewayConfiguration -ErrorAction Continue) -ForegroundColor Green
}

If(Get-ADGroup -Filter "Name -Eq 'Remote Desktop Users'") {
    #M365 Migration
    Write-Host 'Searching for applocker policy...'
    Write-Host (Get-AppLockerPolicy -Local -ErrorAction Continue) -ForegroundColor Green
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:52:56