【问题标题】:Add users from DisplayName list to security group将 DisplayName 列表中的用户添加到安全组
【发布时间】:2021-04-13 21:02:05
【问题描述】:

我有以下用户列表,我想将 Active Directory 用户添加到此列表的组中。我知道我不能使用DisplayName 向群组添加成员,那么如何将列出的用户添加到群组中?

有没有什么好的方法可以通过将DisplayName 转换为DNSamAccountName 来添加用户?任何意见和建议将不胜感激。

<Userlist.csv>
-----------
AddtoGroupname,DisplayName (*)
Group1,UserName1
Group1,UserName2
Group2,UserName3
...

(*)是会员用户的DisplayNames,需要添加左侧组名。

我们的环境正在运行 Powershell 2.0。

【问题讨论】:

    标签: powershell windows-server-2008-r2


    【解决方案1】:

    您可以通过使用 Get-ADUser 根据 DisplayName 过滤来获取 AD 用户对象,然后使用 Add-ADGroupMember 将它们添加到组中来做到这一点。

    因为 Get-ADUser 可能会返回多个结果(如果有重复的显示名称),所以它使用 ForEach 循环遍历所有重复项:

    Import-CSV Userlist.csv | ForEach-Object {
        $Users = (Get-ADUser -filter "displayname -eq $($_.DisplayName)")
        ForEach ($User in $Users) {
            Write-Host "Adding $User to $($_.AddtoGroupName)"
            Add-ADGroupMember -Identity $_.AddtoGroupName -Members $User
        }
    }
    

    您可能想要替换/删除 Write-Host,我刚刚添加了它,以便您查看发生了什么。

    【讨论】:

    • 谢谢马克!!这是完美的!!我真的很感谢你的帮助!
    • 不幸的是,我测试时它不起作用......我不知道为什么,但 $Users 返回 null..
    • 尝试将过滤器更改为:"displayname -like $($_.DisplayName)"
    • 哦,您可能还需要请求 displayname 属性。我会相应地修改我的答案。
    • 非常感谢您的帮助。我找到了原因,它是对 csv 文件的编码。我用 Unicode 覆盖了 csv,然后你给我看的下面的代码首先起作用了!
    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2015-11-11
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多