使用PowerShell将安全组导入嵌套(Add-ADGroupMember)

vXE

我有+100行AD安全组,其中每个集合可能包含3-7个需要添加为成员的安全组。

我已将此数据分解为CSV格式,但到目前为止,我仍无法使用Import-CSV cmdlet来处理数据。

到目前为止,我仅创建了100个条目,如下所示,但是我想看看如何通过导入CSV来解决这个问题。

我在这里阅读了其他CSV问题,并重新阅读了一些Powershell书籍,但到目前为止,没有什么可以找到适当的解决方案。

$DCName = DC01
Add-ADGroupMember -Server $DCName -MainGroup -Members 'Group001', 'Group002', 'Group003' 
Add-ADGroupMember -Server $DCName -SecondGroup -Members 'Group011', 'Group022', 'Group033'
Add-ADGroupMember -Server $DCName -ThirdGroup -Members 'Group111', 'Group222'

在CSV内:

MainGroup   SecondGroup   ThirdGroup
Group001    Group011      Group111
Group002    Group022      Group222
Group003    Group033
Frode F.
  1. 没有一个所谓的财产-MainGroupAdd-ADGroupMember,你需要使用-Identity "MainGroup"
  2. 这不是一个很好的CSV文件。CSV文件中的一行应代表一个项目,每列应为“描述”该项目的属性。您的列值独立于同一行上的其他值。我会这样写:

    MembersToAdd.csv

    Group,Member
    MainGroup,Group001
    MainGroup,Group002
    SecondGroup,Group011
    SecondGroup,Group022
    

    这样,每个任务将有1行,因此很明显应该在何处添加谁。前任。

    Import-CSV MembersToAdd.csv | Foreach-Object {
        Write-Host "Add $($_.Member) to $($_.Group)"
        Add-ADGroupMember -Identity $_.Group -Members $_.Member
    
        #Or you could have added all members to an array, used `Group-Object Group` or 
        #something else to collect all members an do a single `Add-ADGroupMember` call for that group.
    }
    

但是,要使用当前的CSV,您可以尝试执行以下操作:

$DCName = "DC01"

#Hashtable to store group = members values
$AddMembers = @{}

Import-CSV -Path mygrouplist.csv | ForEach-Object {
    #Foreach property (column)
    $_.psobject.Properties | ForEach-Object {

        #If property has value
        if($_.Value) {

            #If new "maingroup", create hashtable entry with an array to store values in
            if($AddMembers.ContainsKey($_.Name) -eq $false) { $AddMembers.Add($_.Name,@()) }

            #Add member to group in hashtable
            $AddMembers[$_.Name] += $_.Value
        }
    }
}

#Foreach entry (group) in hashtable, add members
$AddMembers.GetEnumerator() | ForEach-Object { Add-ADGroupMember -Server $DCName -Identity $_.Name -Members $_.Value }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Powershell批量删除-ADGroupMember

Powershell-Get-AdGroupMember超出限制

PowerShell:get-adgroupmember并忽略ForeignSecurityPrincipals帐户

使用gMSA和Get-ADGroupMember的PowerShell脚本

Powershell Get ADGroupMember 有 2 个身份组

PowerShell:get-adgroupmember的启用状态为空白

Powershell 5.1.16299.1146 Get-ADGroupMember 发生操作错误

为来自不同域 Powershell 的多个成员添加 ADGroupMember

Add-ADGroupMember :找不到接受参数的位置参数

使用 userPrincipalName 将用户添加到 ADGroupMember

无法使用get-adgroupmember -recursive检索跨域用户

为什么命令Add-ADGroupMember不再与参数-Member一起使用?

Get-ADgroupmember FSP 帐户问题

非域成员的 Get-ADGroupMember 处理

Get-ADGroupMember:已超出此请求的大小限制

合并Get-ADGroupMember和Get-AD用户

Get-ADGroupMember 排序名称并添加“;” 每个名字的背后

使用ARM PowerShell将网络安全组分配给网络接口

使用Powershell将电子邮件地址添加到AD安全组

安全组使用带有嵌套 for 循环的 terraform

如果 Get-ADGroupMember 没有找到禁用用户.. 说

我如何找到作为ADGroupMember的每个用户的经理详细信息

安全组的使用与角色

获取AD安全组的嵌套成员

PowerShell:如何将1个用户添加到多个Active Directory安全组-具有写权限的安全组的“安全”选项卡

如何使用#AWS-CDK从另一个堆栈导入安全组?

powershell 无法通过阵列将 ip 添加到安全组中

如何使用 powershell 从所有订阅中列出 Azure 网络安全组

将多个安全组映射到 ELB