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

如何用PowerShell哈希表实现AD用户组查询时非成员显示NULL

问题解决:修改PowerShell脚本实现指定组判断与NULL显示

修改思路

原脚本在用户不属于目标组时,Value列会显示为空,我们需要添加判断逻辑:当没有匹配到目标组时,将Value设为字符串NULL;若匹配到组,则保留组名(多个组用逗号分隔)。

修改后的脚本

# 若需获取多个用户,可将-identity参数替换为-filter *或其他筛选条件
$cyberarkAccounts = Get-ADUser -Identity users01 -Properties samaccountname, enabled, memberof

$cyberarkAccountTable = @{}

foreach ($account in $cyberarkAccounts) {
    # 获取用户所属的目标组
    $matchedGroups = $account.MemberOf | ForEach-Object { (Get-ADGroup $_).sAMAccountName } | 
                     Where-Object { $_ -eq 'apps users' -or $_ -eq 'apps test users' }
    
    # 根据匹配结果赋值:无匹配则设为NULL,有匹配则拼接组名
    if (-not $matchedGroups) {
        $cyberarkAccountTable[$account.samaccountname] = 'NULL'
    } else {
        $cyberarkAccountTable[$account.samaccountname] = $matchedGroups -join ', '
    }
}

# 格式化输出结果
$cyberarkAccountTable | Format-Table -AutoSize

关键改动说明

  1. 新增空值判断:通过if (-not $matchedGroups)检查是否匹配到目标组,未匹配时直接赋值字符串NULL,替代原逻辑的空值输出。
  2. 多组格式处理:使用-join ', '将多个匹配到的组名转为逗号分隔的字符串,与期望输出格式一致。
  3. 匹配条件优化:将原-like改为精确匹配的-eq(若组名固定),避免模糊匹配带来的意外结果;若组名存在变体,可保留-like并调整通配符。

验证输出

修改后执行脚本,输出将符合期望:

Name       Value
----       -----
Users01    NULL
Users02    apps users
Users03    apps users, apps test users

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:03:18