Set-ADUser: Cómo cambiar las propiedades de usuario en Active Directory con PowerShell
El cmdlet Set-ADUser permite modificar las propiedades del usuario (atributos) en Active Directory usando PowerShell. Tradicionalmente, un complemento MMC gráfico
dsa.msc(Active Directory Users and Computers, ADUC) se utiliza para editar las propiedades de los usuarios de AD. El complemento ADUC se puede utilizar para cambiar las propiedades del usuario o los atributos avanzados en la pestaña Editor de atributos. Sin embargo, no puede modificar los atributos de usuario de forma masiva a través de la consola ADUC (es parcialmente posible hacerlo usando consultas guardadas de AD). En este artículo, veremos algunos ejemplos del uso del cmdlet Set-ADUser para cambiar las propiedades del usuario en AD.
Este
Set-ADUsercmdlet es parte del módulo de Active Directory para Windows PowerShell y el módulo debe estar instalado en su computadora. En Windows Server, el módulo RSAT-AD-PowerShell se instala desde las funciones de Windows, y en Windows 10 debe instalarlo desde RSAT:
Add-WindowsCapability -online -Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”Modificación de propiedades de usuario en Active Directory con PowerShell
El cmdlet Get-ADUser tiene alrededor de 50 opciones relacionadas con los atributos de AD (ciudad, empresa, departamento, descripción, dirección de correo electrónico, teléfono móvil, organización, nombre principal de usuario, etc.). Puede mostrar la lista de atributos disponibles usando el siguiente comando:
Get-Help Set-ADUser -Parameter *|ft
El nombre de un usuario para el que desea cambiar los atributos de AD se especifica en la opción obligatoria Identidad (puede especificarlo como sAMAccountName, SID, Distinguished Name u objectGUID).
Por ejemplo, obtengamos el valor del atributo Título de un usuario usando el cmdlet Get-ADUser:
Get-ADUser -Identity M.Becker -Properties title|select-object name,titleLuego cambie su título de trabajo en AD:
Set-ADuser M.Becker -title “Junior DevOps Engineer”Puede cambiar los valores de varios atributos a la vez. Por ejemplo, configuremos una nueva dirección de correo electrónico y una lista de computadoras en las que un usuario puede iniciar sesión:
Set-ADUser M.Becker -EmailAddress M.Becker@a-d.site -LogonWorkstations 'munx32f2r13,munx32f2r15'El siguiente comando deshabilitará una cuenta de usuario en el dominio:
Set-ADUser M.Becker -Enabled $FalsePuede cambiar una foto de usuario en AD:
Set-ADUser M.Becker -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\scripts\ad\m.becker.jpg" -Encoding byte))}Puede editar valores de otros atributos de usuario (incluidos extensionAttribute y atributos personalizados) en AD utilizando estas opciones de Set-ADUser:
Agregar: agrega un valor de atributo
-
Reemplazar: reemplaza un valor de atributo
Borrar: borra un valor de atributo
Eliminar: elimina uno de los valores de atributo
Por ejemplo, para cambiar el número de teléfono de un usuario, puede usar este comando:
Set-ADUser M.Becker -MobilePhone $NewNumberO :
Set-ADUser M.Becker -replace @{'MobilePhone' = $($Number) }Para agregar un nuevo valor a extensionAttribute5:
Set-ADUser M.Becker -Add @{extensionAttribute5 = "Test1"}Para borrar un valor de atributo:
Set-ADUser M.Becker -Clear "extensionAttribute5"Puede cambiar los valores de múltiples atributos a la vez:
Set-ADUser M.Becker -Replace @{title="Senior DevOps";company="XYZ"}Además, con estas opciones, puede cambiar los atributos de varios valores. Por ejemplo, agreguemos múltiples ProxyAddresses (alias de correo electrónico) a un usuario:
Set-ADUser M.Becker -add @{ProxyAddresses="smtp:M.Becker@a-d.site, ,SMTP:moritz.becker@a-d.site " -split ","}¿Cómo modificar de forma masiva los atributos de los usuarios de Active Directory?
Puede cambiar los atributos de varios usuarios a la vez. Por ejemplo, el siguiente comando cambiará el valor del atributo UserAccountControl y obligará a todos los usuarios de la unidad organizativa especificada a cambiar sus contraseñas en el próximo inicio de sesión:
Get-ADUser -Filter * -SearchBase "OU=Users,OU=DE,DC=a-d,DC=loc" | Set-ADUser -ChangePasswordAtLogon $true
Puede actualizar de forma masiva los atributos de usuario de AD con los valores de un archivo CSV. Por ejemplo, tiene un archivo CSV con la lista de cuentas, títulos y números de teléfono (el formato del archivo es: SamAccountName, Título, MobilePhone).
Para actualizar los atributos de usuario con los valores del archivo CSV, ejecute el siguiente comando de PowerShell:
Import-Csv "C:\scripts\ad\update_ad_users.csv" | foreach {Set-ADUser -Identity $_.SamAccountName -Title $_.Title -MobilePhone $_.MobilePhone}Puede delegar privilegios para actualizar los atributos de usuario en AD a un empleado de recursos humanos e incluso enseñarles cómo trabajar con dichos archivos CSV/Excel de PowerShell.
¿Cómo mostrar el nombre de la computadora del usuario que inició sesión en ADUC?
En uno de los artículos anteriores mostramos cómo agregar información de usuario a las propiedades de la computadora en AD usando el cmdlet Set-ADComputer. Ahora consideremos otro enfoque e intentemos agregar información sobre una computadora en la que un usuario inició sesión en las propiedades del usuario en Active Directory.
Para hacerlo, basta con agregar el siguiente script de PowerShell a los scripts de GPO de inicio de sesión que se ejecutarán cuando un usuario inicie sesión en la computadora (Configuración de usuario -> Políticas -> Configuración de Windows -> Scripts -> Inicio de sesión):
Set-ADUser -identity $env:UserName -Description $env:computernameEl script asume que el módulo PowerShell para Active Directory está instalado en las computadoras de los usuarios. Si no desea instalar RSAT en todas las computadoras, puede usar el módulo AD PowerShell sin instalación copiando sus archivos en todas las computadoras usando GPO o un script de inicio de sesión.
Esto le permitirá encontrar rápidamente el nombre de la computadora en la que el usuario inició sesión.
En este ejemplo, guardamos el nombre de la computadora actual en el atributo estándar Descripción. Puede usar otro atributo, digamos uno de ExtensionAttributes.



