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

[玩转系统] 如何轻松地将用户导入 Active Directory

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

如何轻松地将用户导入 Active Directory


如果您需要导入 Active Directory 域中的用户,那么您就来到了正确的博客文章。不再使用 Active Directory 用户和计算机。在本文中,您将了解如何使用 PowerShell 读取 CSV 文件,不仅创建用户,还将 AD 属性与 CSV 文件中的用户帐户同步。

如果您环顾网络,您会发现无数的 PowerShell 脚本和片段用于将用户导入 Active Directory。您要么会找到昂贵的商业工具,要么会发现很小的脚本。为了防止这种情况,我构建了一个名为 PSADSync 的 PowerShell 模块。

PSADSync PowerShell 模块负责:

  • 读取 CSV 文件(甚至数据库)
  • 收集所有必要的属性
  • 在 Active Directory 中查找匹配的用户
  • 填充必要的用户属性,甚至创建一个新属性

配置

要进行设置,请打开 PowerShell 控制台并安装 PSADSync 模块。

Install-Module PSADSync

唯一的要求是安装 PowerShell v4、您有权在 Active Directory 中对用户帐户进行属性更改,并且运行该工具的计算机是 Active Directory 的成员。

该模块使用 ActiveDirectory 模块,但如果您还没有,它会为您下载并安装它。

相关:如何安装 PowerShell Active Directory 模块

安装模块后,就可以收集包含您想要同步到 Active Directory 的员工信息的 CSV 文件了。

下面是我将使用的 CSV 文件。其中包含三名员工,分别由他们的名字、姓氏和来自某些人力资源来源的内部员工 ID 表示。

FirstName,LastName,EmployeeNumber
Adam,Jones,1
Bob,Baker,2
Sherry,Risley,3

我希望此 CSV 文件中的每个员工都具有与 AD 中表示的完全相同的名字和姓氏。这是我们的 AD 同步 PowerShell 工具的第一步。

但首先,我需要找到 CSV 行和单个 AD 用户帐户之间的匹配项。为了进行匹配,我需要一个唯一的标识符。对于本例,我有一个员工编号。在 AD 中,这由 EmployeeId 字段表示。该工具将使用它来进行 1:1 匹配。

我通过使用 PowerShell 哈希表将 CSV EmployeeNumber 字段映射到 AD EmployeeId 属性来定义此匹配。

$fieldMatchMap = @{ EmployeeNumber = 'EmployeeId' }

接下来,我需要将每个 CSV 字段与 AD 字段进行映射,以告诉工具哪些 CSV 字段与哪些 AD 属性匹配。我将通过创建另一个哈希表来再次执行此操作。

请注意,哈希表中的键值是 CSV 字段,每个键/值对的值是要检查和更改的 AD 属性(如有必要)。

$fieldSyncMap = @{
    FirstName = 'givenName'
    LastName = 'sn'
}

现在我们已经正确映射了所有内容,您距离将用户导入 Active Directory 又近了一步!现在确保 AD 用户对象与应有的不同。

您可以在下面看到它们都没有 GivenNameSurname 属性。完成后,这些帐户应与 CSV 字段中的内容匹配。

PS> 1,2,3 | foreach { Get-AdUser -Properties EmployeeId -Filter "EmployeeId -eq $_" } | select employeeId,givenname,surname

employeeId givenname surname
---------- --------- -------
1
2
3

运行 AD Sync PowerShell 工具

现在运行该工具。运行PSADsync是使用Invoke-AdSync命令完成的。我将使用刚刚构建的哈希表来传递到 Invoke-AdSync 以及指定我将使用的 CSV 文件的位置。

PS> $fieldMatchMap = @{ EmployeeNumber = 'EmployeeId' }
PS> $fieldSyncMap = @{
        FirstName = 'givenName'
        LastName = 'sn'
    }
PS> Invoke-AdSync -FieldSyncMap $fieldSyncMap -FieldMatchMap $fieldMatchMap -CsvFilePath 'C:\Employees.csv'

现在我们将进行另一项检查以确保所有属性均已填充。

PS> 1,2,3 | foreach { Get-AdUser -Properties EmployeeId -Filter "EmployeeId -eq $_" } | select employeeId,givenname,surname

employeeId givenname surname
---------- --------- -------
1          Adam      Jones
2          Bob       Baker
3          Sherry    Risley

概括

这只是使用 PowerShell 同步 AD 的介绍。 PSADSync 模块支持许多不同的场景,并具有广泛的 Pester 测试套件。它应该能够支持您想要执行的任何类型的同步!

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

取消回复欢迎 发表评论:

关灯