当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 将用户添加到多个组

作者:精品下载站 日期:2024-12-14 18:31:59 浏览:15 分类:玩电脑

使用 PowerShell 将用户添加到多个组


如何使用 PowerShell 从 CSV 文件将用户批量添加到多个 AD 组?您可以在 AD 中选择多个用户并将他们添加到多个组中,但是如果用户分布在不同的 OU 中怎么办?这是使用 PowerShell 自动执行任务的绝佳方法。在本文中,您将了解如何使用 PowerShell 脚本将多个用户添加到多个组。

信息

您需要将 CSV 文件中的用户列表添加到多个安全组该列表使用 SamAccountName 属性填充。

完成任务有两种选择:

  • 手动在 Active Directory 用户和计算机中搜索用户,并将其添加到安全组中。如果您的清单很长,这将非常耗时。不仅如此,您还可能错过列表中的某个用户。

  • 使用 PowerShell 自动化搜索,并将用户添加到安全组。花费的时间会更少,并且您不会错过任何用户。

PowerShell 非常适合自动化,这也是我们推荐使用的。

注意:您要将用户添加到单个组吗?请阅读使用 PowerShell 将用户添加到组。

检查安全组

如果 Active Directory 中没有安全组,请创建安全组。在此示例中,我们有安全组财务HRPilot销售。已经有用户添加到这些组中。

[玩转系统] 使用 PowerShell 将用户添加到多个组

请务必复制组名称(Windows 2000 之前的版本)并将其添加到 CSV 文件中。

[玩转系统] 使用 PowerShell 将用户添加到多个组

了解更多:通过 PowerShell 列出安全组中的所有用户 »

使用 Import-Csv cmdlet 检查 CSV 文件

检查 CSV 文件并确保标题正确。在我们的示例中,它是 CSV 文件 Demo1.csv,其标题为 SamAccountNameGroup

[玩转系统] 使用 PowerShell 将用户添加到多个组

重要提示:确保每行后面没有空格。如果是这样,您将收到错误,并且脚本将无法添加用户。一个很好的方法是在字段周围添加引号。

将 CSV 文件放入 C:\Temp 文件夹中。如果没有临时文件夹,请创建一个。

[玩转系统] 使用 PowerShell 将用户添加到多个组

以管理员身份运行 Windows PowerShell。确保 PowerShell 可以读取该文件,运行 Import-Csv cmdlet。

PS C:\> Import-Csv "C:\Temp\Demo1.csv"

SamAccountName Group
-------------- -----
Ali.Tajran     Pilot;HR
John.Watkin    Unknown
Amanda.Morgan
Amanda.Morgan  Support
Amanda.Morgan  HR;Pilot
Khalid.Abbas   Agency;HR;Helpdesk
Richard.Grant  Helpdesk

继续阅读:导入 CSV 分隔符 PowerShell »

将用户添加到多个组 PowerShell 脚本

下载 Add-ADUsers-Multi.ps1 PowerShell 脚本或将以下代码复制并粘贴到记事本中。将其命名为 ADUsers-Multi.ps1 并将其放置在 C:\scripts 文件夹中。如果没有,请创建一个 scripts 文件夹。

# Start transcript
Start-Transcript -Path C:\Temp\Add-ADUsers-Multi.log -Append

# Import AD Module
Import-Module ActiveDirectory

# Import the data from CSV file and assign it to variable
$List = Import-Csv "C:\Temp\Demo1.csv"

foreach ($User in $List) {
    # Retrieve UserSamAccountName and ADGroup
    $UserSam = $User.SamAccountName
    $Groups = $User.Group

    # Retrieve SamAccountName and ADGroup
    $ADUser = Get-ADUser -Filter "SamAccountName -eq '$UserSam'" | Select-Object SamAccountName
    $ADGroups = Get-ADGroup -Filter * | Select-Object DistinguishedName, SamAccountName

    # User does not exist in AD
    if ($ADUser -eq $null) {
        Write-Host "$UserSam does not exist in AD" -ForegroundColor Red
        Continue
    }
    # User does not have a group specified in CSV file
    if ($Groups -eq $null) {
        Write-Host "$UserSam has no group specified in CSV file" -ForegroundColor Yellow
        Continue
    }
    # Retrieve AD user group membership
    $ExistingGroups = Get-ADPrincipalGroupMembership $UserSam | Select-Object DistinguishedName, SamAccountName

    foreach ($Group in $Groups.Split(';')) {
        # Group does not exist in AD
        if ($ADGroups.SamAccountName -notcontains $Group) {
            Write-Host "$Group group does not exist in AD" -ForegroundColor Red
            Continue
        }
        # User already member of group
        if ($ExistingGroups.SamAccountName -eq $Group) {
            Write-Host "$UserSam already exists in group $Group" -ForeGroundColor Yellow
        } 
        else {
            # Add user to group
            Add-ADGroupMember -Identity $Group -Members $UserSam
            Write-Host "Added $UserSam to $Group" -ForeGroundColor Green
        }
    }
}
Stop-Transcript

第 8 行:编辑 CSV 文件名和路径。

在下一步中,我们将查看将多个用户添加到多个组的 PowerShell 脚本。

从 CSV 文件将用户批量添加到多个组

以管理员身份运行 Windows PowerShell。更改脚本文件夹的路径并运行 Add-ADUsers-Multi.ps1 PowerShell 脚本。

该脚本将遍历 CSV 文件中的所有用户。 -WhatIf 参数添加到脚本的第 44 行 中。如果运行该脚本,环境中不会发生任何事情。相反,您将得到一个显示将发生什么的输出。

Add-ADUsers-Multi.ps1 脚本将显示:

  • 如果用户被添加到组中

  • 如果该用户已存在于组中

  • 如果用户没有在 CSV 文件中指定组

  • 如果 Active Directory 中不存在该用户

  • 如果 Active Directory 中不存在该组

PS C:\> cd c:\scripts
PS C:\scripts> .\Add-ADUsers-Multi.ps1
Transcript started, output file is C:\Temp\Add-ADUsers-Multi.log
Ali.Tajran already exists in group Pilot
Ali.Tajran already exists in group HR
John.Watkin does not exist in AD
Amanda.Morgan has no group specified in CSV file
Support group does not exist in AD
What if: Performing the operation "Set" on target "CN=HR,OU=Groups,OU=Company,DC=exoip,DC=local".
Added Amanda.Morgan to HR
Amanda.Morgan already exists in group Pilot
Khalid.Abbas does not exist in AD
Helpdesk group does not exist in AD
Transcript stopped, output file is C:\Temp\Add-ADUsers-Multi.log

从 PowerShell 脚本中删除 -WhatIf 参数并重新运行该脚本。 CSV 中的用户将添加到组中。

Transcript started, output file is C:\Temp\Add-ADUsers-Multi.log
Ali.Tajran already exists in group Pilot
Ali.Tajran already exists in group HR
John.Watkin does not exist in AD
Amanda.Morgan has no group specified in CSV file
Support group does not exist in AD
Added Amanda.Morgan to HR
Amanda.Morgan already exists in group Pilot
Khalid.Abbas does not exist in AD
Helpdesk group does not exist in AD
Transcript stopped, output file is C:\Temp\Add-ADUsers-Multi.log

验证添加用户的安全组

脚本完成后,查看 Active Directory 用户和计算机。转到几个安全组并验证您是否看到成员选项卡中 CSV 文件中的用户。

输出将显示在 Windows PowerShell 控制台中。不仅如此,它还会在日志中显示输出,因为 PS 脚本中添加了脚本。转到 C:\temp 文件夹并打开 Add-ADUsers-Multi.log 文件。

[玩转系统] 使用 PowerShell 将用户添加到多个组

一切看起来都很棒!这是否可以帮助您使用 PowerShell 从 CSV 文件将用户批量添加到多个组?

继续阅读:使用 PowerShell 将 AD 用户导出到 CSV »

结论

在本文中,您了解了如何使用 PowerShell 将多个用户从 CSV 添加到多个组。下载 Add-ADUsers-Multi.ps1 PowerShell 脚本并编辑 CSV 路径。运行脚本并验证 AD 用户是否已成功添加到组中。 PowerShell 非常适合自动化该过程。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 从 CSV 创建 Active Directory 用户。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯