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

寻求Excel VBA代码:基于条件查询生成AD组用户列表

批量处理AD用户权限分组并生成导入数据方案

方法一:Excel Power Query(可视化操作,无需编码)

适合不熟悉脚本的用户,直接在Excel内完成数据转换:

  1. 导入数据到Power Query:选中原始数据区域 → 点击「数据」选项卡 → 选择「从表格/范围」(勾选「我的表格有标题」)
  2. 生成只读组数据:
    • 在Power Query编辑器中,筛选「只读权限」列值为Yes的行
    • 点击「转换」选项卡 → 「分组依据」:分组列选「安全组」,新列名设为「用户列表」,操作选「所有行」
    • 添加自定义列,命名为「AD组名称」,公式写[安全组] & "-ReadGroup"
    • 对「用户列表」列,点击展开按钮 → 选择「提取值」,分隔符选逗号,生成逗号分隔的用户字符串
    • 删除多余列,保留「安全组」「AD组名称」「用户列表」
  3. 生成读写组数据:
    • 返回原始Power Query数据(或复制步骤1的查询),筛选「读写权限」列值为Yes的行
    • 重复上述分组、自定义列、提取值的步骤,AD组名称公式改为[安全组] & "-RWGroup"
  4. 合并结果:将只读组和读写组的查询结果合并,点击「主页」→「合并查询」→「追加查询」,选择两个查询
  5. 导出到新工作表:点击「关闭并上载」,数据会加载到新的工作表中

方法二:PowerShell脚本(自动化处理,支持直接导入AD)

适合需要批量自动化或后续直接对接AD的场景,步骤如下:

步骤1:准备环境

确保已安装ImportExcel模块(用于读取/写入Excel)和Active Directory模块(用于操作AD):

# 安装ImportExcel模块(仅首次运行)
Install-Module -Name ImportExcel -Scope CurrentUser -Force

# 导入AD模块(需AD权限)
Import-Module ActiveDirectory

步骤2:数据转换脚本

读取原始数据并生成目标格式的导入数据:

# 读取原始Excel数据
$rawData = Import-Excel -Path "C:\你的数据文件.xlsx" -WorksheetName "原始数据"

# 初始化结果数组
$finalData = @()

# 按安全组分组处理
foreach ($safeGroup in $rawData | Group-Object -Property 安全组) {
    $safeName = $safeGroup.Name

    # 处理只读组
    $readOnlyUsers = $safeGroup.Group | Where-Object { $_.'只读权限' -eq 'Yes' } | Select-Object -ExpandProperty 用户名
    $finalData += [PSCustomObject]@{
        '安全组'     = $safeName
        'AD组名称'   = "$safeName-ReadGroup"
        '用户列表'   = $readOnlyUsers -join ','
    }

    # 处理读写组
    $rwUsers = $safeGroup.Group | Where-Object { $_.'读写权限' -eq 'Yes' } | Select-Object -ExpandProperty 用户名
    $finalData += [PSCustomObject]@{
        '安全组'     = $safeName
        'AD组名称'   = "$safeName-RWGroup"
        '用户列表'   = $rwUsers -join ','
    }
}

# 导出到新Excel文件(用于手动导入AD)
$finalData | Export-Excel -Path "C:\AD组导入数据.xlsx" -WorksheetName "导入数据" -AutoSize

步骤3:直接创建AD组并添加用户(可选)

如果需要跳过手动导入,直接在AD中创建组并添加用户,在上述脚本后追加以下代码:

# 遍历生成的组数据,创建AD组并添加用户
foreach ($entry in $finalData) {
    $groupName = $entry.'AD组名称'
    # 检查组是否已存在,不存在则创建
    if (-not (Get-ADGroup -Filter "Name -eq '$groupName'" -ErrorAction SilentlyContinue)) {
        New-ADGroup -Name $groupName `
                    -GroupCategory Security `
                    -GroupScope Global `
                    -Path "OU=Groups,DC=yourdomain,DC=com" # 修改为你的AD组织单元路径
    }
    # 拆分用户列表并添加到组
    foreach ($user in ($entry.'用户列表' -split ',')) {
        Add-ADGroupMember -Identity $groupName -Members $user -ErrorAction SilentlyContinue
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:43:09