Set-ADUser PowerShell cmdlet 允许管理员快速更新用户帐户属性,如密码、经理或设置,无需使用 UI。它有助于维护准确的数据,应用组织策略更改,并高效执行批量更新。本文包含步骤和实用示例,帮助您在确保安全与合规的同时管理用户。
Import-Module ActiveDirectory
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 -Identity <sAMAccountName> -ChangePasswordAtLogon $true
Set-ADAccountPassword -Identity <sAMAccountName> -NewPassword (ConvertTo-SecureString "NewP@ssw0rd!" -AsPlainText -Force)
分配或更改用户的经理。
Set-ADUser -Identity <sAMAccountName> -Manager "cn=<managerCN>,ou=<OUName>,dc=<domain>,dc=<tld>"
使用 -Replace 参数一次更新一个或多个属性,如 Title 和 Department。
Set-ADUser -Identity <sAMAccountName> -Replace @{Title="<JobTitle>"; Department="<DepartmentName>"}
使用 Set-ADUser 添加或替换用户的代理电子邮件地址。
Set-ADUser -Identity <sAMAccountName> -Add @{ProxyAddresses="SMTP:<PrimaryEmail>","smtp:<SecondaryEmail>"}
要替换所有代理地址:
Set-ADUser -Identity <sAMAccountName> -Replace @{ProxyAddresses="SMTP:<PrimaryEmail>"}
添加或修改自定义扩展属性。
Set-ADUser -Identity <sAMAccountName> -Add @{extensionAttribute1="<Value1>"; extensionAttribute2="<Value2>"}
更改常见帐户设置,如办公室、描述和过期日期。
Set-ADUser -Identity <sAMAccountName> -Office "<OfficeLocation>" -Description "<DescriptionText>" -AccountExpirationDate "<MM/DD/YYYY>"
禁用不再活跃或需要临时阻止的用户帐户。
Set-ADUser -Identity <sAMAccountName> -Enabled $false
更改常见帐户设置,如密码选项、帐户锁定或过期。
Set-ADUser -Identity <sAMAccountName> -ChangePasswordAtLogon $true
解锁因登录失败而被锁定的用户帐户。
Unlock-ADAccount -Identity <sAMAccountName>
更改常见帐户设置,如办公室、描述和过期日期。
Set-ADUser -Identity <sAMAccountName> -Title "<JobTitle>" -Department "<DepartmentName>"
解决方案:当传递给 -Identity 不是 有效值时会发生此情况。确保您的 CSV 或输入变量包含正确的属性,例如 SamAccountName 或 DistinguishedName。如果您使用脚本,请确认引用了正确的列,例如,如果您的数据提供的是 $_.userPrincipalName,则应使用 $_.SamAccountName。
解决方案:这意味着您使用了不是 cmdlet 直接参数的属性。请在 Microsoft Docs 中仔细检查 Set-ADUser 的属性名称和支持的参数。对于扩展属性,请改用哈希表格式。例如:
使用 -Replace @{physicalDeliveryOfficeName='Value'},而不是直接调用。
解决方案:通常当数据类型与属性预期不符时会发生此情况。例如,布尔属性应使用 $True 或 $False,而不是 "1" 或 "0"。对于自定义属性,请先检查其类型,确保使用正确的格式,不要将布尔值或数字用引号括起来。
解决方案:您试图向仅接受单个值的属性添加多个值。描述或备注等属性是单值的。如果需要追加信息,请手动合并旧文本和新文本,然后使用 -Replace 传入完整的合并字符串。
解决方案:脚本无法连接到域控制器。检查网络连接、DNS 解析,并确保 Active Directory Web Services 正在运行。如有必要,尝试其他域控制器或使用 dcdiag 或 repadmin 命令验证复制状态。
解决方案:运行脚本的账户权限不足,无法修改 AD 用户属性。请使用具有 AD 写权限的账户运行 PowerShell,例如属于 Account Operators 或 Domain Admins 组的账户。
解决方案:此错误通常由 -Filter 或属性参数的语法问题引起。确保所有属性名称正确,字符串值用单引号括起,特殊字符正确转义。
AD Users and Computers (ADUC) 是更新用户属性的常用方法。
ADManager Plus 简化了整个过程,消除错误,为所有 AD 用户管理 操作提供简单解决方案。
仅依赖 PowerShell 和 ADUC 更新 AD 用户属性存在一些缺点:
ADManager Plus 通过单一直观的控制台,使 AD 管理更简单、更快捷。以下是它为何是 IT 团队更佳选择的原因:
可以使用 Set-ADUser 和 Enable-ADAccount cmdlet 来启用 AD 用户。运行以下命令,将 username 替换为实际的用户登录名、区分名称或对象 GUID。
Enable-ADAccount -Identity username
Set-ADUser -Identity username -Enabled $true
或者,可以使用无脚本工具如 ManageEngine ADManager Plus,只需几次点击即可 启用 AD 用户。
可以直接使用 Set-ADUser 更新自定义属性(包括扩展属性或架构属性),将 extensionAttribute1 替换为您 AD 设置中可用的任何架构属性,将 YourValue 替换为所需的值。
Set-ADUser -Identity username -Replace @{extensionAttribute1="YourValue"}
或者,像 ManageEngine ADManager Plus 这样的工具可以让您轻松完成相同任务,无需使用脚本。