名称
    Set-ADUser

摘要
    修改 Active Directory 用户。


语法
    Set-ADUser [-Identity] <ADUser> [-AccountExpirationDate <System.Nullable[System.DateTime]>] [-AccountNotDelegated <
    System.Nullable[bool]>] [-Add <hashtable>] [-AllowReversiblePasswordEncryption <System.Nullable[bool]>] [-CannotCha
    ngePassword <System.Nullable[bool]>] [-Certificates <hashtable>] [-ChangePasswordAtLogon <System.Nullable[bool]>] [
    -City <string>] [-Clear <string[]>] [-Company <string>] [-Country <string>] [-Department <string>] [-Description <s
    tring>] [-DisplayName <string>] [-Division <string>] [-EmailAddress <string>] [-EmployeeID <string>] [-EmployeeNumb
    er <string>] [-Enabled <System.Nullable[bool]>] [-Fax <string>] [-GivenName <string>] [-HomeDirectory <string>] [-H
    omeDrive <string>] [-HomePage <string>] [-HomePhone <string>] [-Initials <string>] [-LogonWorkstations <string>] [-
    Manager <ADUser>] [-MobilePhone <string>] [-Office <string>] [-OfficePhone <string>] [-Organization <string>] [-Oth
    erName <string>] [-PasswordNeverExpires <System.Nullable[bool]>] [-PasswordNotRequired <System.Nullable[bool]>] [-P
    OBox <string>] [-PostalCode <string>] [-ProfilePath <string>] [-Remove <hashtable>] [-Replace <hashtable>] [-SamAcc
    ountName <string>] [-ScriptPath <string>] [-ServicePrincipalNames <hashtable>] [-SmartcardLogonRequired <System.Nul
    lable[bool]>] [-State <string>] [-StreetAddress <string>] [-Surname <string>] [-Title <string>] [-TrustedForDelegat
    ion <System.Nullable[bool]>] [-UserPrincipalName <string>] [-AuthType {Negotiate | Basic}] [-Credential <PSCredenti
    al>] [-Partition <string>] [-PassThru <switch>] [-Server <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

    Set-ADUser -Instance <ADUser> [-SamAccountName <string>] [-AuthType {Negotiate | Basic}] [-Credential <PSCredential
    >] [-Partition <string>] [-PassThru <switch>] [-Server <string>] [-Confirm] [-WhatIf] [<CommonParameters>]


说明
    Set-ADUser cmdlet 修改 Active Directory 用户的属性。 可以使用 cmdlet 参数来修改经常使用的属性值。 不与 cmdlet 参数关联的属性值可以使用 Add、Replace、Clear 和 
    Remove 参数修改。

    Identity 参数指定要修改的 Active Directory 用户。 可以通过可分辨名称 (DN)、GUID、安全标识符 (SID) 或安全帐户管理器 (SAM) 帐户名来标识用户。 还可以将 Identity 参数设置为
    对象变量(例如 $<localUserObject>),或者可以通过管道将对象传递到 Identity 参数。 例如,可以使用 Get-ADUser cmdlet 检索某个用户对象,然后将该对象通过管道传递到 Set-ADUser
     cmdlet。

    Instance 参数提供了一种通过应用对用户对象的副本所做的更改来更新用户对象的方法。 如果将 Instance 参数设置为某个经过修改的 Active Directory 用户对象副本,则 Set-ADUser cmdlet 
    会对原始用户对象进行同样的更改。 要获取需要修改的对象的副本,请使用 Get-ADUser 对象。 使用 Instance 参数时不允许使用 Identity 参数。 有关 Instance 参数的详细信息,请参阅 Instanc
    e 参数说明。 有关如何在 Active Directory cmdlet 中使用 Instance 概念的详细信息,请参阅 about_ActiveDirectory_Instance。

    下面的示例说明如何使用以下三种方法来修改用户对象的 Manager 属性:
     - 通过指定 Identity 和 Manager 参数
     - 通过经由管道传递用户对象并指定 Manager 参数
     - 通过指定 Instance 参数。

    方法 1:使用 Identity 和 Manager 参数修改“saraDavis”用户的 Manager 属性。 

     Set-ADUser -Identity "saraDavis" -Manager "JimCorbin"

    方法 2:通过经由管道传递“saraDavis”用户并指定 Manager 参数来修改“saraDavis”用户的 Manager 属性。

     Get-ADUser -Identity "saraDavis" | Set-ADUser -Manager "JimCorbin"

    方法 3:使用 Windows PowerShell 命令行修改“saraDavis”用户的本地实例,从而修改“saraDavis”用户的 Manager 属性。 然后将 Instance 参数设置为本地实例。

     $user = Get-ADUser -Identity "saraDavis"
     $user.Manager = "JimCorbin" 
     Set-ADUser -Instance $user. 

    对于 AD LDS 环境,除下列两种情况外,必须指定 Partition 参数:
      -cmdlet 从 Active Directory 提供程序驱动器中运行。
      -为 AD LDS 环境定义了默认的命名上下文或分区。 要为 AD LDS 环境指定默认的命名上下文,请设置 AD LDS 实例的 Active Directory 目录服务代理 (DSA) 对象 (nTDSDSA) 的 ms
    DS-defaultNamingContext 属性。

参数
    -AccountExpirationDate <System.Nullable[System.DateTime]>
        指定帐户的到期日期。将此参数设置为 0 时,帐户永不过期。此参数设置帐户对象的 AccountExpirationDate 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“accountExpi
        res”。

        指定此参数时使用 DateTime 语法。除非指定了时间,否则假定时间为当地时间。当未指定时间值时,该时间假定为当地时间 12:00:00 AM。当未指定日期时,该日期假定为当前日期。以下示例说明指定 DateTime 对
        象的常用语法。
          "4/17/2006"
        "Monday, April 17, 2006"
        "2:22:45 PM"
        "Monday, April 17, 2006 2:22:45 PM"

        这些示例指定相同的日期和时间,但不带秒数。
        "4/17/2006 2:22 PM"
        "Monday, April 17, 2006 2:22 PM"
        "2:22 PM"

        以下示例说明如何使用 RFC1123 标准指定日期和时间。此示例使用格林威治标准时间 (GMT) 来定义时间。
        "Mon, 17 Apr 2006 21:22:48 GMT"

        以下示例说明如何将往返值指定为协调世界时 (UTC)。此示例代表 UTC 时间 2006 年 4 月 17 日,星期一下午 2:22:48。 
        "2006-04-17T14:22:48.0000000" 

        以下示例说明如何将此参数设置为 2012 年 5 月 1 日下午 5 点。 
        -AccountExpirationDate "05/01/2012 5:00:00 PM"

    -AccountNotDelegated <System.Nullable[bool]>
        指定用户的安全上下文是否委派给服务。当此参数设置为 true 时,不会将帐户的安全上下文委派给服务,即使服务帐户设置为对于 Kerberos 委派受信任也是如此。此参数为 Active Directory 帐户设置 Acc
        ountNotDelegated 属性。此参数还设置 Active Directory 用户帐户控制 (UAC) 属性的 ADS_UF_NOT_DELEGATED 标志。此参数的可能值包括 
        $false 或 0
        $true 或 1

        以下示例说明如何设置此参数,使得帐户的安全上下文不委派给服务。
        -AccountNotDelegated $true

    -Add <hashtable>
        指定要为对象属性添加的值。使用此参数可为无法使用 cmdlet 参数修改的属性添加一个或多个值。要修改对象属性,必须使用 LDAP 显示名称。可以通过指定逗号分隔的值列表来为属性指定多个值,并可以通过使用分号分隔各属性来指
        定多个属性。此参数的格式为 
        -Add @{Attribute1LDAPDisplayName=value1, value2, ...;   Attribute2LDAPDisplayName=value1, value2, ...; Attribut
        eNLDAPDisplayName=value1, value2, ...}

        例如,如果要删除值“555-222-2222”,将值“555-222-1111”和“555-222-3333”添加到 Phone-Office-Other 属性(LDAP 显示名称“otherTelephone”),并将值
        “555-222-9999”添加到 Phone-Mobile-Other(LDAP 显示名称“otherMobile”),请按如下方式设置 Add 和 Remove 参数。

        -Add @{otherTelephone='555-222-1111', '555-222-3333'; otherMobile='555-222-9999' } -Remove @{otherTelephone='55
        5-222-2222'}

        同时使用 Add、Remove、Replace 和 Clear 参数时,将按以下顺序执行这些操作:
        ..Remove
        ..Add
        ..Replace

    -AllowReversiblePasswordEncryption <System.Nullable[bool]>
        指定帐户是否允许可逆的密码加密。此参数设置帐户的 AllowReversiblePasswordEncryption 属性。此参数还设置 Active Directory 用户帐户控制 (UAC) 属性的 ADS_UF_E
        NCRYPTED_TEXT_PASSWORD_ALLOWED 标志。此参数的可能值包括:
        $false 或 0
        $true 或 1

        以下示例说明如何将此参数设置为 true。
        -AllowReversiblePasswordEncryption $true

    -AuthType <ADAuthType>
        指定要使用的身份验证方法。此参数的可能值包括:
        Negotiate 或 0
        Basic 或 1

        默认身份验证方法为 Negotiate。

        基本身份验证方法需要安全套接字层 (SSL) 连接。

        以下示例说明如何将此参数设置为 Basic。
        -AuthType Basic
        下面列出了此参数的可接受值:

    -CannotChangePassword <System.Nullable[bool]>
        指定是否可以更改帐户密码。此参数设置帐户的 CannotChangePassword 属性。此参数的可能值包括:
        $false 或 0
        $true 或 1

        以下示例说明如何设置此参数,以便可以更改帐户密码。
        -CannotChangePassword $false

    -Certificates <hashtable>
        修改帐户的 DER 编码的 X.509v3 证书。这些证书包括由 Microsoft 证书服务颁发给此帐户的公钥证书。此参数设置帐户对象的 Certificates 属性。此属性的 LDAP 显示名称 (ldapDispl
        ayName) 是“userCertificate”。

        语法:
        添加值:
        -Certificates @{Add=value1,value2,...}
        删除值:
        -Certificates @{Remove=value3,value4,...}
        替换值:
        -Certificates @{Replace=value1,value2,...}
        清除所有值:
        -Certificates $null

        可以使用分号分隔的列表来指定多个操作。例如,使用下面的语法添加和删除 Certificate 值 
        -Certificates @{Add=value1,value2,...};@{Remove=value3,value4,...}

        将按以下顺序应用运算符:
        ..Remove
        ..Add
        ..Replace

        以下示例说明如何使用 New-Object cmdlet 创建证书,然后将它添加到用户帐户中。当此 cmdlet 运行时,<certificate password> 将替换为用于添加证书的密码。

        $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate certificate1.cer  <certificate
         password>
        Set-ADUser saradavis  -Certificates @{Add=$cert}

        以下示例说明如何添加指定为字节数组的证书。
        Set-ADUser saradavis  -Certificates @{Add= [Byte[]](0xC5,0xEE,0x53,...)}

    -ChangePasswordAtLogon <System.Nullable[bool]>
        指定在下次登录尝试期间是否必须更改密码。此参数的可能值包括:
        $false 或 0
        $true 或 1

        对于 PasswordNeverExpires 属性设置为 true 的帐户,此参数不能设置为 $true 或 1。

        以下示例说明如何设置此参数,使得在登录时必须更改密码。
        -ChangePasswordAtLogon $true

    -City <string>
        指定用户所在的城镇。此参数设置用户的 City 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“l”。

        以下示例说明如何设置此参数。
        -City "Las Vegas"

    -Clear <string[]>
        指定要在目录中清除的对象属性序列。使用此参数可清除一个或多个无法使用 cmdlet 参数修改的属性值。要修改对象属性,必须使用 LDAP 显示名称。可以通过指定逗号分隔列表来修改多个属性。此参数的格式为 
        -Clear Attribute1LDAPDisplayName, Attribute2LDAPDisplayName

        例如,如果要清除 Phone-Office-Other 属性的值(LDAP 显示名称“otherTelephone”),请按如下方式设置 Clear 参数。

        -Clear otherTelephone

        同时使用 Add、Remove、Replace 和 Clear 参数时,将按以下顺序执行这些操作:
        ..Remove
        ..Add
        ..Replace
        ..Clear

    -Company <string>
        指定用户所在的公司。此参数设置用户对象的 Company 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“company”。 

        以下示例说明如何设置此参数。
        -Company "Contoso"

    -Country <string>
        指定用户所选语言的国家或地区代码。此参数设置用户对象的 Country 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“c”。Windows 2000 不使用该值。

        以下示例说明如何设置此参数。
        -Country "IN"

    -Credential <PSCredential>
        指定用于执行此任务的用户帐户凭据。默认凭据是当前登录用户的凭据,除非 cmdlet 是从 Active Directory PowerShell 提供程序驱动器中运行的。如果 cmdlet 是从这样的提供程序驱动器运行的,
        则与该驱动器相关联的帐户为默认帐户。

        要指定此参数,可以键入用户名,如“User1”或“Domain01\User01”,也可以指定 PSCredential 对象。如果为此参数指定用户名,cmdlet 将提示您输入密码。 

        也可以使用脚本或使用 Get-Credential cmdlet 来创建 PSCredential 对象。然后可以将 Credential 参数设置为 PSCredential 对象。以下示例说明如何创建凭据。
        $AdminCredentials = Get-Credential "Domain01\User01"

        下面说明如何将 Credential 参数设置为这些凭据。
        -Credential $AdminCredentials

        如果现用凭据没有执行任务的目录级权限,Active Directory PowerShell 将返回终止错误。

    -Department <string>
        指定用户所在的部门。此参数设置用户的 Department 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“department”。 

        以下示例说明如何设置此参数。
        -Department "Development"

    -Description <string>
        指定对象的说明。此参数设置对象的 Description 属性的值。此属性的 LDAP 显示名称 (ldapDisplayName) 是“description”。 

        以下示例说明如何将此参数设置为示例描述。
        -Description "Description of the object"

    -DisplayName <string>
        指定对象的显示名称。此参数设置对象的 DisplayName 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“displayName”。

        以下示例说明如何设置此参数。
        -DisplayName "Sara Davis Laptop"

    -Division <string>
        指定用户所在的分部。此参数设置用户对象的 Division 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“division”。 

        以下示例说明如何设置此参数。
        -Division "Software"

    -EmailAddress <string>
        指定用户的电子邮件地址。此参数设置用户对象的 EmailAddress 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“mail”。 

        以下示例说明如何设置此参数。
        -EmailAddress "saradavis@contoso.com"

    -EmployeeID <string>
        指定用户的职员 ID。此参数设置用户对象的 EmployeeID 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“employeeID”。 

        以下示例说明如何设置此参数。
        -EmployeeID  "A123456"

    -EmployeeNumber <string>
        指定用户的职员编号。此参数设置用户对象的 EmployeeNumber 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“employeeNumber”。 

        以下示例说明如何设置此参数。
        -EmployeeNumber "12345678"

    -Enabled <System.Nullable[bool]>
        指定帐户是否已启用。启用的帐户需要密码。此参数设置帐户对象的 Enabled 属性。此参数还设置 Active Directory 用户帐户控制 (UAC) 属性的 ADS_UF_ACCOUNTDISABLE 标志。此参数
        的可能值包括:
        $false 或 0
        $true 或 1 

        以下示例说明如何设置此参数以启用帐户。
        -Enabled $true

    -Fax <string>
        指定用户的传真号码。此参数设置用户对象的 Fax 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“facsimileTelephoneNumber”。 

        以下示例说明如何设置此参数。
        -Fax  "+1 (999) 555 1212"

    -GivenName <string>
        指定用户的名字。此参数设置用户对象的 GivenName 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“givenName”。

        以下示例说明如何设置此参数。
        -givenName "Sanjay"

    -HomeDirectory <string>
        指定用户的主目录。此参数设置用户对象的 HomeDirectory 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“homeDirectory”。

        以下示例说明如何设置此参数。
        -HomeDirectory "\\users\saraDavisHomeDir"

    -HomeDrive <string>
        指定与 HomeDirectory 属性所定义的 UNC 路径相关联的驱动器。驱动器号以“<DriveLetter>:”形式指定,其中 <DriveLetter> 指示要关联的驱动器号。<DriveLetter> 必须是单
        个大写字母,并且必须带有冒号。此参数设置用户对象的 HomeDrive 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“homeDrive”。 

        以下示例说明如何设置此参数。
        -HomeDrive "D:"

    -HomePage <string>
        指定对象主页的 URL。此参数设置 Active Directory 对象的 homePage 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“wWWHomePage”。

        以下示例说明如何将此参数设置为 URL。
        -HomePage "http://employees.contoso.com/sdavis"

    -HomePhone <string>
        指定用户的家庭电话号码。此参数设置用户的 HomePhone 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“homePhone”。

        以下示例说明如何设置此参数。
        -HomePhone  "+1 (999) 555 1212"

    -Identity <ADUser>
        通过提供以下属性值之一指定 Active Directory 用户对象。圆括号中的标识符是属性的 LDAP 显示名称。

        可分辨名称 
        示例:CN=SaraDavis,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com
        GUID (objectGUID) 
        示例:599c3d2e-f72d-4d20-8a88-030d99495f20 
        安全标识符 (objectSid) 
        示例:S-1-5-21-3165297888-301567370-576410423-1103
        SAM 帐户名 (sAMAccountName) 
        示例:saradavis

        cmdlet 搜索默认命名上下文或分区来查找对象。如果找到两个或更多对象,cmdlet 将返回非终止错误。 

        此参数还可通过管道获取此对象,或者您也可以将此参数设置为对象实例。 

        此示例说明如何将参数设置为可分辨名称。
        -Identity  "CN=SaraDavis,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com"

        此示例说明如何将此参数设置为名为“userInstance”的用户对象实例。
        -Identity   $userInstance

    -Initials <string>
        指定代表用户名一部分的首字母。可以使用该值来表示用户的中间名首字母。此参数设置用户的 Initials 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“initials”。

        以下示例说明如何设置此参数。
        -Initials "L"

    -Instance <ADUser>
        指定一个 ADUser 对象,用于标识应修改的 Active Directory 用户对象以及应对该对象进行的一组更改。如果使用此参数,则对 ADUser 对象所做的任何修改也将应用于对应的 Active Director
        y 对象。cmdlet 仅更新已更改的对象属性。 
        指定作为 -Instance 参数值的 ADUser 对象必须是通过 Get-ADUser cmdlet 检索获得的。指定 Instance 参数时,不能指定其他设置对象各属性的参数。

        以下示例说明如何使用 Get-ADUser cmdlet 检索 ADUser 对象的实例。此对象使用 Windows PowerShell 命令行进行了修改。然后,Set-ADUser cmdlet 会将所做的修改保存到 
        Active Directory 对象中。

        步骤 1:检索对象的本地实例。
        $userInstance = Get-ADUser  -Identity saraDavis
        步骤 2:修改对象实例的一个或多个属性。
        $userInstance.EmailAddress = "saradavis@contoso.com"
        步骤 3:将所做的修改保存到 saraDavis。
        Set-ADUser -Instance $userInstance

    -LogonWorkstations <string>
        指定用户可以访问的计算机。要指定多个计算机,请创建一个逗号分隔列表。可以使用计算机的安全帐户管理器 (SAM) 帐户名 (sAMAccountName) 或 DNS 主机名来标识该计算机。SAM 帐户名与计算机的 NetB
        IOS 名称相同。

        此属性的 LDAP 显示名称 (ldapDisplayName) 是“userWorkStations”。 

        以下示例说明如何使用 SAMAccountName(NetBIOS 名称)和 DNSHostName 值来设置此参数。
        -LogonWorkstations "saraDavisDesktop,saraDavisLapTop,projectA.corp.contoso.com"

    -Manager <ADUser>
        指定用户的管理器。此参数设置用户的 Manager 属性。通过提供以下属性值之一设置此参数:注意:括号中的标识符是属性的 LDAP 显示名称。

        可分辨名称 
        示例:CN=SaraDavis,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com
        GUID (objectGUID) 
        示例:599c3d2e-f72d-4d20-8a88-030d99495f20 
        安全标识符 (objectSid) 
        示例:S-1-5-21-3165297888-301567370-576410423-1103
        SAM 帐户名 (sAMAccountName) 
        示例:saradavis

        此属性的 LDAP 显示名称 (ldapDisplayName) 是“manager”。

        以下示例说明如何设置此参数。
        -Manager saradavis

    -MobilePhone <string>
        指定用户的移动电话号码。此参数设置用户对象的 MobilePhone 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“mobile”。

        以下示例说明如何设置此参数。
        -MobilePhone  "+1  (999 ) 555 1212"

    -Office <string>
        指定用户的办公地点或公司所在地。此参数设置用户对象的 Office 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“office”。

        以下示例说明如何设置此参数。
        -Office  "D1042"

    -OfficePhone <string>
        指定用户的办公电话号码。此参数设置用户对象的 OfficePhone 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“telephoneNumber”。

        以下示例说明如何设置此参数。
        -OfficePhone  "+1 (999) 555 1212"

    -Organization <string>
        指定用户所在的组织单位。此参数设置用户对象的 Organization 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“o”。

        以下示例说明如何设置此参数。
        -Organization "Accounting"

    -OtherName <string>
        指定除了用户的名字和姓氏以外的名称,如用户的中间名。此参数设置用户对象的 OtherName 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“middleName”。

        以下示例说明如何设置此参数。
        -OtherName  "Peter"

    -Partition <string>
        指定 Active Directory 分区的可分辨名称。可分辨名称必须是当前目录服务器上的命名上下文之一。cmdlet 搜索此分区来查找 Identity 参数定义的对象。 
        下面两个示例说明如何指定此参数的值。
        -Partition "CN=Configuration,DC=EUROPE,DC=TEST,DC=CONTOSO,DC=COM"

        -Partition "CN=Schema,CN=Configuration,DC=EUROPE,DC=TEST,DC=CONTOSO,DC=COM"

        在很多情况下,如果没有指定值,Partition 参数将使用默认值。下面给出了确定默认值的规则。请注意,规则将按列出顺序进行评估,一旦可以确定默认值,则不再评估规则。

        在 AD DS 环境中,在以下情况下将设置 Partition 的默认值:如果 - Identity 参数设置为可分辨名称,则根据该可分辨名称自动生成 Partition 的默认值。 
        - 如果从 Active Directory 提供程序驱动器运行 cmdlet,则根据该驱动器的当前路径自动生成 Partition 的默认值。
        - 如果前面所有的情况都不适用,则 Partition 的默认值将设置为目标域的默认分区或命名上下文。

        在 AD LDS 环境中,在以下情况下将设置 Partition 的默认值: 
        - 如果 Identity 参数设置为可分辨名称,则根据该可分辨名称自动生成 Partition 的默认值。 
        - 如果从 Active Directory 提供程序驱动器运行 cmdlet,则根据该驱动器的当前路径自动生成 Partition 的默认值。
        - 如果目标 AD LDS 实例有默认命名上下文,则 Partition 的默认值将设置为该默认命名上下文。要为 AD LDS 环境指定默认的命名上下文,请设置 AD LDS 实例的 Active Directory 目录
        服务代理 (DSA) 对象 (nTDSDSA) 的 msDS-defaultNamingContext 属性。
        - 如果前面所有的情况都不适用,则 Partition 参数将不采用任何默认值。

    -PassThru <switch>
        返回新对象或修改过的对象。默认情况下(即,如果未指定 –PassThru),此 cmdlet 不生成任何输出。

    -PasswordNeverExpires <System.Nullable[bool]>
        指定帐户密码是否可以过期。此参数设置帐户对象的 PasswordNeverExpires 属性。此参数还设置 Active Directory 用户帐户控制属性的 ADS_UF_DONT_EXPIRE_PASSWD 标志。
        此参数的可能值包括:
        $false 或 0
        $true 或 1 

        注意:如果帐户的 ChangePasswordAtLogon 属性设置为 true,则此参数不能设置为 $true 或 1。

        以下示例说明如何设置此参数,以便密码可以过期。
        -PasswordNeverExpires $false

    -PasswordNotRequired <System.Nullable[bool]>
        指定帐户是否需要密码。此参数设置帐户(如用户帐户或计算机帐户)的 PasswordNotRequired 属性。此参数还设置 Active Directory 用户帐户控制属性的 ADS_UF_PASSWD_NOTREQD
         标志。此参数的可能值为:
        $false 或 0 
        $true 或 1 

        以下示例说明如何设置此参数,使帐户不需要密码。
        -PasswordNotRequired $true

    -POBox <string>
        指定用户的邮政信箱号。此参数设置用户对象的 POBox 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“postOfficeBox”。

        以下示例说明如何设置此参数。
        -POBox  "25662"

    -PostalCode <string>
        指定用户的邮政编码。此参数设置用户的 PostalCode 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“postalCode”。

        以下示例说明如何设置此参数。
        -PostalCode "28712"

    -ProfilePath <string>
        指定用户配置文件的路径。该值可以是本地绝对路径,也可以是通用命名约定 (UNC) 路径。此参数设置用户对象的 ProfilePath 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“profil
        ePath”。

        以下示例说明如何将此参数设置为本地路径和 UNC 路径。-ProfilePath "E:\users\profiles\saraDavis"
        -ProfilePath "\\users\profiles\saraDavis"

    -Remove <hashtable>
        指定 cmdlet 删除一个对象属性的值。使用此参数可删除一个或多个无法使用 cmdlet 参数修改的属性值。若要删除对象属性,必须使用 LDAP 显示名称。可以通过指定分号分隔列表来删除多个属性。此参数的格式为 
        -Remove @{Attribute1LDAPDisplayName=value[];   Attribute2LDAPDisplayName=value[]}

        例如,如果要在 LDAP 显示名称为 FavColors 的属性中添加值 blue 和 green 并删除值 pink,请按如下方式设置 Add 和 Remove 参数。
        -Add @{FavColors=Blue,Green} -Remove {FavColors=Pink}

        同时使用 Add、Remove、Replace 和 Clear 参数时,将按以下顺序应用这些参数:
        ..Remove
        ..Add
        ..Replace
        ..Clear

    -Replace <hashtable>
        指定将替换当前值的对象属性值。使用此参数可替换一个或多个无法使用 cmdlet 参数修改的属性值。要修改对象属性,必须使用 LDAP 显示名称。可以通过指定逗号分隔列表来修改多个属性。此参数的格式为 
        -Replace @{Attribute1LDAPDisplayName=value[],   Attribute2LDAPDisplayName=value[]}

        例如,如果要将 Phone-Office-Other 属性中的值“555-222-2222”替换为值“555-222-1111”(LDAP 显示名称“otherTelephone”),请按如下方式设置 Replace 参数
        。

        -Replace @{otherTelephone='555-222-2222', '555-222-1111'}

        同时使用 Add、Remove、Replace 和 Clear 参数时,将按以下顺序执行这些操作:
        ..Remove
        ..Add
        ..Replace
        ..Clear

    -SamAccountName <string>
        指定用户、组、计算机或服务帐户的安全帐户管理器 (SAM) 帐户名。描述文本的最大长度为 256 个字符。为了与旧版操作系统兼容,创建一个不超过 20 个字符的 SAM 帐户名。此参数设置帐户对象的 SAMAccountN
        ame。此属性的 LDAP 显示名称 (ldapDisplayName) 是“sAMAccountName”。

        以下示例说明如何指定此参数。
        -SAMAccountName "saradavis"

        注意:如果提供的字符串值不是以‘$’字符结束,必要时系统将添加该字符。

    -ScriptPath <string>
        指定用户登录脚本的路径。该值可以是本地绝对路径,也可以是通用命名约定 (UNC) 路径。此参数设置用户的 ScriptPath 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“scriptPat
        h”。 

        以下示例说明如何设置此参数。
        -ScriptPath "\\logonScripts\saradavisLogin"

    -Server <string>
        通过为相应的域名或目录服务器提供以下值之一,指定要连接到的 Active Directory 域服务实例。服务可以是以下任何一种:Active Directory 轻型域服务、Active Directory 域服务或 A
        ctive Directory 快照实例。
        域名值:
        完全限定的域名
        示例:corp.contoso.com
        NetBIOS 名称
        示例:CORP

        目录服务器值:
        完全限定的目录服务器名称
        示例:corp-DC12.corp.contoso.com
        NetBIOS 名称
        示例:corp-DC12
        完全限定的目录服务器名称和端口
        示例:corp-DC12.corp.contoso.com:3268

        Server 参数的默认值由下列方法(按它们列出的顺序)之一决定:
        -通过使用通过管道传递的对象中的 Server 值。
        -在该驱动器下运行时,通过使用与 Active Directory PowerShell 提供程序驱动器关联的服务器信息。
        -通过使用运行 Powershell 的计算机所在的域。 

        以下示例说明如何将完全限定域名指定为参数值。
        -Server "corp.contoso.com"

    -ServicePrincipalNames <hashtable>
        指定帐户的服务主体名称。此参数设置帐户的 ServicePrincipalNames 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是 servicePrincipalName。此参数使用下面的语
        法来添加、删除、替换或清除服务主体名称值。 
        语法:
        添加值:
        -ServicePrincipalNames @{Add=value1,value2,...}
        删除值:
        -ServicePrincipalNames @{Remove=value3,value4,...}
        替换值:
        -ServicePrincipalNames @{Replace=value1,value2,...}
        清除所有值:
        -ServicePrincipalNames $null

        可以使用分号分隔的列表来指定多项更改。例如,使用下面的语法添加和删除服务主体名称。 
        @{Add=value1,value2,...};@{Remove=value3,value4,...}

        将按以下顺序应用运算符:
        ..Remove
        ..Add
        ..Replace

        以下示例说明如何添加和删除服务主体名称。
-ServicePrincipalNames-@{Add="SQLservice\accounting.corp.contoso.com:1456"};{Remove="SQLservice\finance.corp.co
        ntoso.com:1456"}

    -SmartcardLogonRequired <System.Nullable[bool]>
        指定是否需要具备智能卡才能登录。此参数设置用户的 SmartCardLoginRequired 属性。此参数还设置 Active Directory 用户帐户控制属性的 ADS_UF_SMARTCARD_REQUIRED 
        标志。此参数的可能值为:
        $false 或 0
        $true 或 1 

        以下示例说明如何设置此参数,使得用户必须具有智能卡才能登录帐户。
        -SmartCardLogonRequired $true

    -State <string>
        指定用户或组织单位所在的省/市/自治区。此参数设置用户或组织单位对象的 State 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“st”。

        以下示例说明如何设置此参数。
        -State  "Nevada"

    -StreetAddress <string>
        指定用户的街道地址。此参数设置用户对象的 StreetAddress 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“streetAddress”。

        以下示例说明如何设置此参数。
        -StreetAddress  "1200 Main Street"

    -Surname <string>
        指定用户的姓氏。此参数设置用户对象的 Surname 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“sn”。

        以下示例说明如何设置此参数。
        -Surname  "Patel"

    -Title <string>
        指定用户的职务。此参数设置用户对象的 Title 属性。此属性的 LDAP 显示名称 (ldapDisplayName) 是“title”。

        以下示例说明如何设置此参数。
        -Title  "Manager"

    -TrustedForDelegation <System.Nullable[bool]>
        指定帐户对于 Kerberos 委派是否是可信的。以对 Kerberos 委派而言可信的帐户身份运行的服务可以采用请求该服务的客户端的身份。此参数设置帐户对象的 TrustedForDelegation 属性。该值还设置 
        Active Directory 用户帐户控制属性的 ADS_UF_TRUSTED_FOR_DELEGATION 标志。此参数的可能值为:
        $false 或 0
        $true 或 1

        以下示例说明如何指定帐户对于 Kerberos 委派可信。
        -TrustedForDelegation $true

    -UserPrincipalName <string>
        每个用户帐户都有用户主体名称 (UPN),格式为:<user>@<DNS-domain-name>。UPN 是管理员分配的友好名称,该名称比系统使用的 LDAP 可分辨名称短,更容易记住。UPN 独立于用户对象的 DN,因
        此可以移动或重命名用户对象而不会影响用户登录名。使用 UPN 登录时,用户不必再从登录对话框的列表中选择域。

    -Confirm [<SwitchParameter>]
        在执行命令之前提示您进行确认。

    -WhatIf [<SwitchParameter>]
        描述如果执行该命令会发生什么情况(无需实际执行该命令)。

    <CommonParameters>
        此 cmdlet 支持通用参数: Verbose、Debug、
        ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer 和 OutVariable。有关详细信息,请键入
        “get-help about_commonparameters”。

    -------------------------- 示例 1 --------------------------

    C:\PS>Set-ADUser AntonioAl -HomePage 'http://fabrikam.com/employees/AntonioAl' -LogonWorkstations 'AntonioAl-DSKTOP
    ,AntonioAl-LPTOP'

    将 samAccountName 为 AntonioAL 的用户的属性主页设置为 http://fabrikam.com/employees/AntonioAl,并将 LogonWorkstations 属性设置为 Antonio
    Al-DSKTOP,AntonioAl-LPTOP。




    -------------------------- 示例 2 --------------------------

    C:\PS>Get-ADUser -Filter 'Name -like "*"' -SearchBase 'OU=HumanResources,OU=UserAccounts,DC=FABRIKAM,DC=COM' -Prope
    rties DisplayName | % {Set-ADUser $_ -DisplayName ($_.Surname + ' ' + $_.GivenName)}

    获取组织单位 OU=HumanResources,OU=UserAccounts,DC=FABRIKAM,DC=COM 下的目录中的所有用户。  将这些用户对象的 DisplayName 属性设置为 Surname 和 Given
    Name 属性的串联。




    -------------------------- 示例 3 --------------------------

    C:\PS>Set-ADUser GlenJohn -Replace @{title="director";mail="glenjohn@fabrikam.com"}

    将 samAccountNAme 为 GlenJohn 的用户的 title 属性设置为 director,并将 mail 属性设置为 glenjohn@fabrikam.com




    -------------------------- 示例 4 --------------------------

    C:\PS>Set-ADUser GlenJohn -Remove @{otherMailbox="glen.john"} -Add @{url="fabrikam.com"} -Replace @{title="manager"
    } -Clear description

    通过将 glen.john 从 otherMailbox 属性删除、将 fabrikam.com 添加到 url 属性、用 manager 替换 title 属性并清除 description 属性,修改 samAccountNa
    me 为 GlenJohn 的用户对象。




    -------------------------- 示例 5 --------------------------

    C:\PS>$user = Get-ADUser GlenJohn -Properties mail,department 
    $user.mail = "glen@fabrikam.com"
    $user.department = "Accounting"
    Set-ADUser -instance $user

    通过使用 instance 参数,设置 samAccountName 为 GlenJohn 的用户对象的 mail 和 department 属性。




    -------------------------- 示例 6 --------------------------

    C:\PS># create a byte array for the M-F 8:00 am to 5 pm logon hours
    $hours = New-Object byte[] 21
    $hours[5] = 255; $hours[8] = 255; $hours[11] = 255; $hours[14] = 255; $hours[17] = 255;
    $hours[6] = 1; $hours[9] = 1; $hours[12] = 1; $hours[15] = 1; $hours[18] = 1;

    # create a hashtable to update the logon hours and a description
    $replaceHashTable = New-Object HashTable
    $replaceHashTable.Add("logonHours", $hours)
    $replaceHashTable.Add("description", "Sarah Davis can only logon from Monday through Friday from 8:00 AM to 5:00 PM
    ")

    # set the value of the logonHours and description attributes
    Set-ADUser "SarahDavis" -Replace $replaceHashTable

    将用户登录时间设置为星期一到星期五的早上 8:00 到下午 5:00,并添加说明。 它以指定的字节数组和字符串分别更新“logonHours”和“description”属性。