En este artículo, veremos las características de PowerShell para administrar grupos de dominio de Active Directory. Veremos cómo crear un nuevo grupo en AD, agregar usuarios y eliminarlos, para mostrar la lista de usuarios del grupo y algunas otras acciones útiles con los grupos de dominio, que son extremadamente útiles para la administración diaria. Los siguientes cmdlets básicos están disponibles para administrar grupos de AD en el módulo Active Directory para Windows PowerShell:
Para usar estos cmdlets, debe tener un módulo especial para interactuar con AD: Módulo de Active Directory para Windows PowerShell. Este módulo se introdujo en Windows Server 2008 R2. En Windows Server 2012 / 2012R2 / 2016, está habilitado de forma predeterminada en los controladores de dominio. Puede instalarlo y habilitarlo en computadoras cliente (Windows 10,8.1 y 7) como uno de los componentes RSAT. Puede asegurarse de que el módulo esté disponible de la siguiente manera:
Get-Module -Listavailable
Como puede ver, el módulo ActiveDirectory está cargado. Si no es así, impórtelo usando este comando:
Import-Module ActiveDirectory
Puede obtener una lista completa de los comandos del módulo ejecutando lo siguiente:
Get-Command -Module ActiveDirectory
Hay 147 cmdlets disponibles en el módulo y 11 de ellos hacen referencia a la administración de grupos de AD.
Get-Command -Module ActiveDirectory -Name "*Group*"
Aquí está la lista:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Eliminar-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
New-ADGroup: creación de un nuevo grupo de AD
Cree un nuevo grupo en el contenedor de Active Directory (OU) especificado usando New-ADGroup mando:
New-ADGroup "TestADGroup" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose
Utilizando la Descripción atributo, puede establecer una descripción de grupo y, utilizando DisplayName, se puede cambiar el nombre mostrado.
Uno de los siguientes tipos de grupo se puede configurar mediante GroupScope parámetro:
- 0 = DomainLocal
- 1 = Global
- 2 = Universal
Puede crear un grupo de distribución de la siguiente manera:
New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=woshub,DC=com' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
Add-AdGroupMember: agregar usuarios a un grupo de anuncios
Puede agregar usuarios a un grupo de Active Directory usando Add-AdGroupMember cmdlet. Agregue dos nuevos usuarios a su nuevo grupo:
Add-AdGroupMember -Identity TestADGroup -Members user1, user2
Si la lista de usuarios que se agregarán al grupo es bastante grande, puede guardar la lista de cuentas de usuario en un archivo CSV, luego importar este archivo y agregar cada usuario al grupo.
El formato del archivo CSV debe ser el siguiente (los usuarios deben aparecer uno en una fila con los usuarios como encabezado de columna).
Import-CSV .users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Para obtener todos los miembros de un grupo (groupX) y agregarlos a otro grupo (groupY), use este comando:
Get-ADGroupMember “GroupX” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-Y” -Members $_}
Si necesita copiar los miembros de todos los subgrupos (recursivamente) a un nuevo grupo, ejecute este comando:
Get-ADGroupMember -Identity “GroupX” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupY” -Members $_}
Remove-ADGroupMember: eliminación de usuarios de un grupo de AD
Para eliminar usuarios del grupo de AD, utilice Remove-ADGroupMember cmdlet. Eliminemos dos usuarios del grupo:
Remove-ADGroupMember -Identity TestADGroup -Members user1, user2
Confirmar la eliminación del usuario:
Si tiene que eliminar usuarios de un grupo de acuerdo con la lista de usuarios de un archivo CSV, use este comando:
Import-CSV .users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}
Get-ADGroup: obtener información sobre un grupo de AD
Get-ADGroup cmdlet ayudará a obtener información sobre el grupo:
Get-ADGroup 'TestADGroup'
Este comando muestra información sobre los principales atributos del grupo (DN, tipo de grupo, nombre, SID). Para mostrar los valores de todos los atributos del grupo de dominio de AD, ejecute el siguiente comando:
Get-ADGroup 'TestADGroup' -properties *
Como puede ver, ahora se muestran tales atributos, como la hora de creación y modificación del grupo, descripción, etc.
Con el cmdlet Get-ADGroup, puede buscar grupos según un patrón determinado. Por ejemplo, debe buscar todos los grupos de AD, cuyo nombre contenga la frase administradores::
Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table
Get-ADGroupMember: visualización de la lista de usuarios en un grupo de AD
Para mostrar la lista de usuarios del grupo:
Get-ADGroupMember 'TestADGroup'
Para dejar solo los nombres de usuario en los resultados, ejecute:
Get-ADGroupMember 'TestADGroup'| ft name
Si se incluyen otros grupos de dominio en este grupo, utilice Recursivo parámetro para mostrar la lista completa de miembros, incluidos todos los grupos anidados.
Get-ADGroupMember ADadmins -recursive| ft name
Para exportar la lista de cuentas que son miembros de un grupo específico a un archivo CSV (para su uso posterior en Excel), ejecute el siguiente comando:
Get-ADGroupMember 'ADadmins' -recursive| ft samaccountname| Out-File c:PSADadminsList.csv
Para agregar datos de la cuenta de usuario de AD a un archivo de texto, use el cmdlet Get-ADUser. Por ejemplo, además de la cuenta de usuario, debe mostrar la posición y el número de teléfono de un usuario:
Get-ADGroupMember -Identity ADadmins -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }
Puede contar el número de usuarios en un grupo como este:
(Get-ADGroupMember -Identity 'domain admins').Count
Resultó que hay 7 cuentas de administrador en el grupo "administradores de dominio".
Para obtener la lista de grupos vacíos en la unidad organizativa específica, use este comando:
Get-ADGroup -Filter * -Properties Members -searchbase “OU=NY,OU-US,DC=corp,dc=woshub,DC=com” | where {-not $_.members} | select Name