【问题标题】:Adding all users to a AD group excluding a few ones using powershell将所有用户添加到 AD 组,不包括使用 powershell 的少数用户
【发布时间】:2020-11-14 19:00:35
【问题描述】:

我有这个疑问,

必须将活动目录中的每个用户都添加到一个组中,但有一些用户不必在该组中,

我已经知道这组被歧视用户的信息了..

所以,有一种方法可以执行 powershell 命令,我指定这组用户,并且每个与该组不匹配的用户都将被添加到组中?

我正在制作一个 csv 文件,其中所有用户都是 SamAccountName

Get-AdUser -Filter * | Select SamAccountName | Export-CSV c:\List.csv

,所以我可以添加带有组名称的第二列,之后我想在 powershell 中添加一个 where 子句,以将 SamAccountName 与另一个 csv 与一组区分用户进行比较,但我不知道如果那行得通...

有简单的方法吗?

【问题讨论】:

    标签: powershell active-directory active-directory-group


    【解决方案1】:

    你有很多选择。我会创建一个带有排除项的平面数组,然后在 Where 子句中使用它。

    类似:

    $ExcludedUsers =
    @(
        "user1"
        "user2"
        #...
    )
    
    $GroupMembers = Get-AdUser -Filter * | Where-Object{ $ExcludedUsers -notcontains $_.samAccountName} 
    Add-ADGroupMember -Identity <GroupName> -Members $GroupMembers
    

    如果您要从 csv 文件中提取排除项,您可以使用以下内容:

    $ExcludedUsers = ( Import-Csv C:\ExcludedUsers.csv ).samAccountName
    $GroupMembers  = Get-AdUser -Filter * | Where-Object{ $ExcludedUsers -notcontains $_.samAccountName} 
    Add-ADGroupMember -Identity <GroupName> -Members $GroupMembers
    

    如果这有帮助,请告诉我。

    【讨论】:

    • 它工作,它工作得非常顺利,在 $GroupMembers 行中它是缺失的)这就是我可以添加的所有内容,非常感谢史蒂文,你太棒了.. 希望你有一个很好的隔离
    • 哦,感谢您指出这一点。我编辑了答案。您不需要将其包装在 () 中。
    【解决方案2】:
    $ExcludedUsers = @()
    import-csv C:\ExcludedUsers.csv | ForEach-Object { $ExcludedUsers += $_.SamAccountName}
    
    $GroupMembers = (Get-AdUser -Filter * | Where-Object{ $ExcludedUsers -notcontains $_.samAccountName})
    
    Add-ADGroupMember -Identity GroupName -Members $GroupMembers
    

    这就是我使用的代码,如果这对将来的任何人有帮助的话。 感谢史蒂夫。

    【讨论】:

    • 你能在第一行前面和最后一行后面显示你可能有的任何代码行,或者是这样吗?
    • 不要以这种方式使用+=。这是不必要的,也是一个坏习惯。在数组上使用它会导致重新创建和复制。在大型集合上,这会导致性能显着下降。在这种情况下,您可以使用自动展开将 samAccountName 提取到数组中。它看起来像:$ExcludedUsers = ( import-csv C:\ExcludedUsers.csv ).SamAccountName。 PoSh 3 中引入了 Auto-Unroll,但即使没有它,您也不需要 +=。这是等效的:$ExcludedUsers = Import-Csv C:\ExcludedUsers.csv | ForEach{ $_.samAccountName }。但是,您可以看到 Auto-Unroll 更加简洁。
    • 我用另一种方法更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多