如何使用 Set-ADUser 更新 AD 用户属性

最后更新于:

Set-ADUser PowerShell cmdlet 允许管理员快速更新用户帐户属性,如密码、经理或设置,无需使用 UI。它有助于维护准确的数据,应用组织策略更改,并高效执行批量更新。本文包含步骤和实用示例,帮助您在确保安全与合规的同时管理用户。

  • PowerShell
  • ADUC
  • ADManager Plus
  • 原生工具的限制
  • 为什么选择 ADManager Plus
  • 常见问题解答
 

使用 PowerShell 更新 AD 用户属性的步骤

  1. 以管理员身份打开 PowerShell ISE。
  2. If the AD module isn't installed, download and install the RSAT package for your Windows version. Then import the module.
    Import-Module ActiveDirectory
  3. Run the following command to update a specific attribute for a user. Replace username with the user's login name and attributeName and newValue with the property you want to modify.
    Set-ADUser -Identity "username" -Replace @{attributeName="newValue"}

支持的参数

以下是 Set-ADUser cmdlet 的一些常用参数:

参数 描述
-Identity 指定要修改的用户帐户。您可以使用用户的 SAM 帐户名、专用名称 (DN)、GUID 或 UPN。
-Replace 更新一个或多个现有属性值。适用于更改如 Title、Department 或 ProxyAddresses 等属性。
-Add 向多值属性(如 ProxyAddresses 或扩展属性)添加新值,而不删除现有值。
-Manager 设置或更新用户的经理属性。
-AccountExpirationDate 设置或修改用户帐户的过期日期。
-ChangePasswordAtLogon 强制用户在下次登录时更改密码。
-Credential 使用备用凭据运行命令。
-Server 指定要连接的域控制器或 AD DS 实例。
-PassThru 返回修改后的用户对象以供验证或脚本中进一步使用。

使用 Set-ADUser 的示例

示例 1:更新 AD 用户的密码并强制其在下次登录时更改。

重置用户密码并设置帐户选项,要求用户在下次登录时更改密码

Set-ADUser -Identity <sAMAccountName> -ChangePasswordAtLogon $true
Set-ADAccountPassword -Identity <sAMAccountName> -NewPassword (ConvertTo-SecureString "NewP@ssw0rd!" -AsPlainText -Force)

示例 2:更新 AD 用户的经理

分配或更改用户的经理。

Set-ADUser -Identity <sAMAccountName> -Manager "cn=<managerCN>,ou=<OUName>,dc=<domain>,dc=<tld>"

示例 3:替换现有属性值

使用 -Replace 参数一次更新一个或多个属性,如 Title 和 Department。

Set-ADUser -Identity <sAMAccountName> -Replace @{Title="<JobTitle>"; Department="<DepartmentName>"}

示例 4:更新 AD 用户的代理地址

使用 Set-ADUser 添加或替换用户的代理电子邮件地址。

Set-ADUser -Identity <sAMAccountName> -Add @{ProxyAddresses="SMTP:<PrimaryEmail>","smtp:<SecondaryEmail>"}

要替换所有代理地址:

Set-ADUser -Identity <sAMAccountName> -Replace @{ProxyAddresses="SMTP:<PrimaryEmail>"}

示例 5:设置扩展属性

添加或修改自定义扩展属性。

Set-ADUser -Identity <sAMAccountName> -Add @{extensionAttribute1="<Value1>"; extensionAttribute2="<Value2>"}

示例 6:更新多个帐户选项

更改常见帐户设置,如办公室、描述和过期日期。

Set-ADUser -Identity <sAMAccountName> -Office "<OfficeLocation>" -Description "<DescriptionText>" -AccountExpirationDate "<MM/DD/YYYY>"

示例 7:禁用 AD 用户帐户

禁用不再活跃或需要临时阻止的用户帐户。

Set-ADUser -Identity <sAMAccountName> -Enabled $false

示例 8:修改 AD 帐户控制值

更改常见帐户设置,如密码选项、帐户锁定或过期。

Set-ADUser -Identity <sAMAccountName> -ChangePasswordAtLogon $true

示例 9:解锁 AD 用户帐户

解锁因登录失败而被锁定的用户帐户。

Unlock-ADAccount -Identity <sAMAccountName>

示例 10:修改 AD 对象属性

更改常见帐户设置,如办公室、描述和过期日期。

Set-ADUser -Identity <sAMAccountName> -Title "<JobTitle>" -Department "<DepartmentName>"

排错技巧

错误:无法验证参数 'Identity' 的参数。该参数为空。

解决方案:当传递给 -Identity 不是 有效值时会发生此情况。确保您的 CSV 或输入变量包含正确的属性,例如 SamAccountNameDistinguishedName。如果您使用脚本,请确认引用了正确的列,例如,如果您的数据提供的是 $_.userPrincipalName,则应使用 $_.SamAccountName

错误:找不到与参数名 'physicalDeliveryOfficeName' 匹配的参数。

解决方案:这意味着您使用了不是 cmdlet 直接参数的属性。请在 Microsoft Docs 中仔细检查 Set-ADUser 的属性名称和支持的参数。对于扩展属性,请改用哈希表格式。例如:

使用 -Replace @{physicalDeliveryOfficeName='Value'},而不是直接调用。

错误:参数不正确(修改自定义属性时)。

解决方案:通常当数据类型与属性预期不符时会发生此情况。例如,布尔属性应使用 $True 或 $False,而不是 "1" 或 "0"。对于自定义属性,请先检查其类型,确保使用正确的格式,不要将布尔值或数字用引号括起来。

错误:Set-ADUser:为单值属性指定了多个值。

解决方案:您试图向仅接受单个值的属性添加多个值。描述或备注等属性是单值的。如果需要追加信息,请手动合并旧文本和新文本,然后使用 -Replace 传入完整的合并字符串。

错误:无法联系服务器。可能是因为该服务器不存在、当前宕机,或未运行 Active Directory Web Services。

解决方案:脚本无法连接到域控制器。检查网络连接、DNS 解析,并确保 Active Directory Web Services 正在运行。如有必要,尝试其他域控制器或使用 dcdiagrepadmin 命令验证复制状态。

错误:访问被拒绝。

解决方案:运行脚本的账户权限不足,无法修改 AD 用户属性。请使用具有 AD 写权限的账户运行 PowerShell,例如属于 Account Operators 或 Domain Admins 组的账户。

错误:查询解析错误或过滤器表达式无效。

解决方案:此错误通常由 -Filter 或属性参数的语法问题引起。确保所有属性名称正确,字符串值用单引号括起,特殊字符正确转义。

使用 ADUC 更新 AD 用户属性

AD Users and Computers (ADUC) 是更新用户属性的常用方法。

  1. 打开 ADUC。
  2. 点击 查看 > 高级功能 以启用 属性编辑器 选项卡。
  3. 浏览 OU 以找到您要编辑的用户账户。
  4. 右键单击该用户并选择 属性
  5. 点击 属性编辑器 选项卡。
  6. 点击您想更改的属性。
  7. 下输入新值并点击 确定
  8. 点击 添加 以添加多个值。
  9. 点击 Apply
  10. 点击 确定 关闭属性窗口。
使用 ADUC 更新 AD 中的用户属性。

使用 ADManager Plus 更新 AD 用户属性

  1. 登录 ADManager Plus 并导航至 管理 > 用户管理
  2. 批量用户修改 下选择所需属性。
  3. 选择您的域,输入用户名,点击 确定。要批量添加多个用户,点击 CSV 导入 并上传包含用户列表的 CSV 文件。
  4. 点击 Search
使用 ADManager Plus 更新 AD 中的用户属性。

ADManager Plus 简化了整个过程,消除错误,为所有 AD 用户管理 操作提供简单解决方案。

使用原生工具更新 AD 用户属性的限制

仅依赖 PowerShell 和 ADUC 更新 AD 用户属性存在一些缺点:

  • 当更新多个属性时,PowerShell 脚本可能变得复杂。
  • 排查错误耗时且影响工作效率。
  • 委派困难,因为更新通常需要管理员权限。
  • ADUC 仅支持一次更新一个用户,没有批量更新选项。
  • ADUC 也缺乏自动化和定制功能,无法处理重复任务。

使用 ADManager Plus 更新 AD 用户属性的亮点

ADManager Plus 通过单一直观的控制台,使 AD 管理更简单、更快捷。以下是它为何是 IT 团队更佳选择的原因:

常见问题解答

可以使用 Set-ADUserEnable-ADAccount cmdlet 来启用 AD 用户。运行以下命令,将 username 替换为实际的用户登录名、区分名称或对象 GUID。

Enable-ADAccount -Identity username
Set-ADUser -Identity username -Enabled $true

或者,可以使用无脚本工具如 ManageEngine ADManager Plus,只需几次点击即可 启用 AD 用户

  1. 登录 ADManager Plus。
  2. 导航至 Management > User Management
  3. 点击 Enable/Disable Users ,位于 Bulk User Modification 下。
  4. 点击 Enable,选择所需的域和要启用的用户账户名称。您甚至可以从 CSV 文件导入用户列表。点击 Apply

可以直接使用 Set-ADUser 更新自定义属性(包括扩展属性或架构属性),将 extensionAttribute1 替换为您 AD 设置中可用的任何架构属性,将 YourValue 替换为所需的值。

Set-ADUser -Identity username -Replace @{extensionAttribute1="YourValue"}

或者,像 ManageEngine ADManager Plus 这样的工具可以让您轻松完成相同任务,无需使用脚本。

  1. 登录 ADManager Plus。
  2. 导航至 Management > User Management
  3. 点击 Custom Attributes ,位于 Bulk User Modification 下。
  4. 输入所需的详细信息,如 LDAP NameData Type Value
  5. 通过手动搜索或导入 CSV 文件查找用户,然后点击 Search
  6. 使用复选框选择您要修改的用户。
  7. 点击 Apply 以更新自定义属性值。

使用 ADManager Plus 简化 AD 批量管理和报告

Active Directory管理与报告的一站式解决方案
电子邮件下载链接 Email the ADManager Plus download link