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

[玩转系统] 使用 PowerShell 从 CSV 导入 AD 用户

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

使用 PowerShell 从 CSV 导入 AD 用户


有时您希望将用户批量导入到 Active Directory 中。您已经将 AD 用户导出到 CSV 文件。但是,现在您想使用该 CSV 文件将用户导入回 AD。最快、最优秀的方法是使用 PowerShell。在本文中,您将了解如何使用 PowerShell 从 CSV 导入 AD 用户。

导入 AD 用户 PowerShell 脚本

Import-ADUsers.ps1 PowerShell 脚本将遍历 CSV 文件并创建 AD 用户,每个用户包含以下信息:

  1. 全名

  2. 显示名称

  3. 用户登录名

  4. 用户主体名称

  5. 街道

  6. 城市

  7. 状态

  8. 邮政编码

  9. 国家

  10. 职称

  11. 部门

  12. 公司

  13. 经理

  14. 描述

  15. 办公室

  16. 电话号码

  17. 电子邮件

  18. 移动的

  19. 笔记

  20. 帐户状态

注意:该帐户的密码将设置为P@ssw0rd1234。在 PowerShell 脚本中将其更改为不同的密码。

如何将用户从 CSV 文件导入到 Active Directory

让我们完成这些步骤并使用 PowerShell 从 CSV 文件批量导入 Active Directory 用户。

第 1 步:与用户一起创建 CSV 文件

如果没有 CSV 文件,您将无法使用该脚本并将用户导入到 AD 中。

  • 如果您已有 Active Directory,则可以运行使用 PowerShell 将 AD 用户导出到 CSV 一文中的脚本。之后,使用该 CSV 文件。

  • 假设您没有 Active Directory 将 AD 用户导出到 CSV 文件,而只需要 CSV 文件示例,以便您可以编辑和使用它;下载 CSV 文件 ImportADUsers.csv。

步骤 2:准备导入 AD 用户 PowerShell 脚本

下载 Import-ADUsers.ps1 PowerShell 脚本并将其放置在域控制器 C:\scripts 文件夹中。如果您没有脚本文件夹,请创建一个。

确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Import-ADUsers.ps1 并将其放置在 C:\scripts 文件夹中。

<#
    .SYNOPSIS
    Import-ADUsers.ps1

    .DESCRIPTION
    Import Active Directory users from CSV file.

    .LINK
    www.a-d.site/import-ad-users-from-csv-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.a-d.site
    LinkedIn:   linkedin.com/in/a-d

    .CHANGELOG
    V1.00, 04/24/2023 - Initial version
#>

# Define the CSV file location and import the data
$Csvfile = "C:\scripts\AllADUsers_202304240919.csv"
$Users = Import-Csv $Csvfile

# Import the Active Directory module
Import-Module ActiveDirectory

# Loop through each user
foreach ($User in $Users) {
    $GivenName = $User.'First name'
    $Surname = $User.'Last name'
    $DisplayName = $User.'Display name'
    $SamAccountName = $User.'User logon name'
    $UserPrincipalName = $User.'User principal name'
    $StreetAddress = $User.'Street'
    $City = $User.'City'
    $State = $User.'State/province'
    $PostalCode = $User.'Zip/Postal Code'
    $Country = $User.'Country/region'
    $JobTitle = $User.'Job Title'
    $Department = $User.'Department'
    $Company = $User.'Company'
    $ManagerDisplayName = $User.'Manager'
    $Manager = if ($ManagerDisplayName) {
        Get-ADUser -Filter "DisplayName -eq '$ManagerDisplayName'" -Properties DisplayName |
        Select-Object -ExpandProperty DistinguishedName
    }
    $OU = $User.'OU'
    $Description = $User.'Description'
    $Office = $User.'Office'
    $TelephoneNumber = $User.'Telephone number'
    $Email = $User.'E-mail'
    $Mobile = $User.'Mobile'
    $Notes = $User.'Notes'
    $AccountStatus = $User.'Account status'

    # Check if the user already exists in AD
    $UserExists = Get-ADUser -Filter { SamAccountName -eq $SamAccountName } -ErrorAction SilentlyContinue

    if ($UserExists) {
        Write-Warning "User '$SamAccountName' already exists in Active Directory."
        continue
    }

    # Create new user parameters
    $NewUserParams = @{
        Name                  = "$GivenName $Surname"
        GivenName             = $GivenName
        Surname               = $Surname
        DisplayName           = $DisplayName
        SamAccountName        = $SamAccountName
        UserPrincipalName     = $UserPrincipalName
        StreetAddress         = $StreetAddress
        City                  = $City
        State                 = $State
        PostalCode            = $PostalCode
        Country               = $Country
        Title                 = $JobTitle
        Department            = $Department
        Company               = $Company
        Manager               = $Manager
        Path                  = $OU
        Description           = $Description
        Office                = $Office
        OfficePhone           = $TelephoneNumber
        EmailAddress          = $Email
        MobilePhone           = $Mobile
        AccountPassword       = (ConvertTo-SecureString "P@ssw0rd1234" -AsPlainText -Force)
        Enabled               = if ($AccountStatus -eq "Enabled") { $true } else { $false }
        ChangePasswordAtLogon = $true # Set the "User must change password at next logon" flag
    }

    # Add the info attribute to OtherAttributes only if Notes field contains a value
    if (![string]::IsNullOrEmpty($Notes)) {
        $NewUserParams.OtherAttributes = @{info = $Notes }
    }

    try {
        # Create the new AD user
        New-ADUser @NewUserParams
        Write-Host "User $SamAccountName created successfully." -ForegroundColor Cyan
    }
    catch {
        # Failed to create the new AD user
        Write-Warning "Failed to create user $SamAccountName. $_"
    }
}
  • 第 21 行:编辑 CSV 文件位置。

  • 第 87 行:更改密码。

步骤 3:运行导入 AD 用户 PowerShell 脚本

以管理员身份运行 PowerShell。更改脚本文件夹的路径。运行 PowerShell 脚本以从 CSV 文件导入 AD 用户。等到它完成。

PS C:\> cd c:\scripts
PS C:\scripts> .\Import-ADUsers.ps1

该脚本将显示是否:

  1. 用户创建成功。

  2. 该用户已经存在。

  3. 无法创建用户并出现警告。

WARNING: User 'Kylie.Davidson' already exists in Active Directory.
WARNING: User 'Leonard.Clark' already exists in Active Directory.
WARNING: User 'Madeleine.Fisher' already exists in Active Directory.
WARNING: User 'Melanie.Scott' already exists in Active Directory.
WARNING: User 'Nicholas.Murray' already exists in Active Directory.
WARNING: User 'Piers.Bower' already exists in Active Directory.
WARNING: User 'Ruth.Dickens' already exists in Active Directory.
User Sebastian.Nolan created successfully.
User Zoe.Roberts created successfully.

步骤 4:验证 AD 用户

验证用户是否已在 Active Directory 中成功创建。

阅读更多内容:使用 PowerShell 将用户添加到多个组 »

结论

您了解了如何使用 PowerShell 从 CSV 导入 AD 用户。如果您使用导出 AD 用户 PowerShell 脚本,并且想要将用户导入回 Active Directory,请运行导入 AD 用户 PowerShell 脚本。

您喜欢这篇文章吗?您可能还喜欢从 Active Directory 导出禁用的用户。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯