你厌倦了打开Active Directory(AD)用户和计算机(ADUC),四处点击,打错字并且按部就班地创建新用户账户吗?如果是这样,你需要自动化使用 PowerShell 中的 New-ADUser cmdlet 来添加用户的常见过程!
现在是星期五晚上,离你计划周末回家只有一个小时了。这是一个忙碌的一周,所以你已经决定和你最亲密的朋友一起观看大比赛。但是,你的老板随意走过来问:“你收到邮件了吗?你能在今天下班前处理好这个吗?”你迅速打开了 Microsoft Outlook,果然是人力资源部门的邮件,你的经理抄送了你,要求你在离开办公室之前为 400 个新员工的 Active Directory(AD)账户提供支持。太好了。大比赛泡汤了。
你迅速在互联网上搜索了一些加快创建这些用户账户的选项,并发现你可以使用命令行和一个名为 New-ADUser 的 PowerShell cmdlet 来自动化 AD 账户的提供。
通常,管理员会通过使用安装在你的桌面计算机上的Active Directory 用户和计算机MMC 快照来手动创建 AD 账户,该快照通过远程服务器管理工具(RSAT)安装。但是以这种方式创建 AD 用户平均每个用户账户需要三分钟的时间。创建 AD 用户账户并不是一项光彩的工作,而且非常适合自动化。
管理员使用 New-AdUser
cmdlet 创建 AD 用户账户对象的常见方法有三种。
- 添加一个 Active Directory 用户帐户,使用所需的和额外的 cmdlet 参数。
- 使用
Instance
参数复制现有的 AD 用户对象,创建一个新帐户。 - 将
Import-Csv
cmdlet 与New-ADUser
cmdlet 配对,使用逗号分隔值(CSV)文件创建多个 Active Directory 用户对象。
有时可以将这些做法结合起来,以创建更高效的解决方案。例如,您可以使用所有三个选项创建一个模板 AD 帐户,然后使用 CSV 文件复制它,以生成多个新的 AD 帐户。
在本文中,您将学习如何利用每种方法使用 New-AdUser
。
使用 ManageEngine ADManager Plus 管理和报告 Active Directory、Exchange 和 Microsoft 365。 下载免费试用版!
先决条件/要求
在开始使用 New-AdUser
cmdlet 之前,您需要确保满足一些先决条件。
- Windows PowerShell 5.1
- 安装了远程服务器管理工具(RSAT)包。此包安装了包含PowerShell模块的Active Directory
New-AdUser
cmdlet - 已登录到与要创建用户帐户相同域中的Windows计算机
- 以拥有权限创建新用户帐户的AD用户帐户身份登录
一旦满足这些要求,您就可以开始了!
使用New-ADUser cmdlet创建单个用户帐户
让我们首先创建一个单个用户帐户,以演示New-ADUser
在基本层面上的工作方式。您会发现New-ADUser没有许多强制参数。实际上,唯一的强制参数是Name
参数,但通常不单独使用。
通常,您会使用许多不同的参数来创建用户帐户。幸运的是,大多数参数都是不言自明的,并且与ADUC中看到的内容很匹配。在下面的示例中,您可以轻松使用许多参数。每个参数大致对应一个单独的用户帐户属性。
请注意,我们在示例中使用反引号。这仅是为了防止长行以提高可读性。
包含AD用户对象的组织单位(OU)不能有重复的SamAccountName。
现在账户已创建,请确认使用 Get-ADUser
cmdlet 创建了账户。如下所示,Get-AdUser
返回了刚创建的用户账户的一些常见属性。
复制现有的AD用户对象
另一种账户创建方法是复制现有的AD用户对象,并将其用作新AD账户的模板。这种方法有几个好处:
- 节省了逐个指定每个参数的时间
- 有助于标准化AD账户的创建
- 它防止了手动账户创建引起的人为错误,并允许同一团队的员工拥有相同的自定义AD属性
对于这个示例,您将使用刚创建的账户作为模板(kesapp-test)。也许您需要创建一个具有相同的状态、位置、部门、国家和城市AD属性的新用户账户。这个新账户将是员工James Brown的账户。
请注意,这种方法存在一些限制,只有以下链接中列出的AD账户属性才能通过此过程复制。欲了解更多信息,请查看复制用户属性的Microsoft文档页面。
第一步是找到将用作模板的AD用户帐户,同时确保通过Properties
参数提供了要复制的所有属性。为此,请使用如下所示的Get-ADUser
cmdlet。这只是将AD用户对象存储在$template_account
变量中。
请注意,第二行将模板对象的UserPrincipalName
(UPN)属性设置为$null
。建议这样做是为了确保模板的UPN是唯一的。每个AD用户帐户必须具有唯一的UPN。
一旦捕获了模板用户帐户,您就可以将该对象用作Instance
参数的值,并提供任何用户特定的参数来填充其他属性,如下所示。
现在,您应该已经有了一个James帐户,并且模板对象带来了所有允许的AD属性。
用户帐户模板常见问题
使用此方法的一个常见错误是在捕获模板对象时对Properties
参数使用通配符*。管理员这样做是因为他们想一次复制所有用户帐户属性。但这样做是行不通的。
例如,下面的命令将会抛出错误:
这种方法的问题在于UserPrincipalName属性需要在AD Forest中是唯一的。因此,UPN应该在New-ADUser
命令中被覆盖,或者在模板变量中设置为空(如下所示)。
另一个使用通配符方法失败的原因是,一些被通配符复制的AD属性是只读的(由安全帐户管理器拥有)。

使用CSV文件创建新用户帐户
更进一步学习的方法是从CSV文件中读取员工帐户,并使用New-ADUser创建AD用户帐户。
这种解决方案经常被许多组织用来自动化帐户创建,配合创建新员工入职信息的HR系统。
假设你收到了一个包含新员工列表的CSV文件。CSV文件中的每一行代表一个单独的帐户,并包含以下列:FirstName,LastName,Department,State,EmployeeID和Office。用户登录帐户的命名约定是员工的名字首字母与姓氏连接在一起,例如ksapp代表员工Kevin Sapp。
一旦你有了CSV文件,就使用Import-Csv
来读取CSV文件,并将每一行作为单独的对象捕获。然后遍历每一行,将CSV文件中的适当字段传递给New-ADUser
的期望参数。你可以在下面看到一个示例。
管理和报告Active Directory、Exchange和Microsoft 365,请使用ManageEngine ADManager Plus。 立即下载免费试用!
摘要
在本文中,您学习了如何使用三种不同的方法来配置新用户帐户:
- 单个帐户创建
- 从模板复制用户帐户
- 使用CSV文件创建多个帐户
这些是在您的环境中配置新用户的基本方法。当您将它们捆绑在一起创建一个PowerShell函数和模块时,这些方法效果很好。您甚至可以进一步采取措施,使用SQL或Oracle数据库作为源(而不是CSV文件)创建自己的自动化流程。根据您自己独特的需求和用例,随意利用每种方法。
希望这些信息能在关键时刻为您节省时间!您学会了一项新技能,并且能够与朋友一起参加聚会,而不会牺牲您的工作与生活平衡!