Operaciones básicas con Powershell / AD

Saltar al contenido principal
< Todos los temas
Imprimir

Operaciones básicas con Powershell / AD

Operaciones Básicas con PowerShell y Active Directory

 

Crear un usuario nuevo

New-ADUser -Name «Carlos Ruiz» -SamAccountName «cruiz» -UserPrincipalName «cruiz@dominio.local» -Path «OU=Usuarios,DC=dominio,DC=local» -AccountPassword (ConvertTo-SecureString «Password123!» -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true -GivenName «Carlos» -Surname «Ruiz» -EmailAddress «cruiz@dominio.local»

Agregar un usuario a múltiples grupos

Add-ADGroupMember -Identity «TI»,»VPN_Users» -Members «cruiz»

Crear múltiples usuarios desde CSV

Import-Csv «usuarios.csv» | ForEach-Object {

    New-ADUser -Name $_.Nombre -SamAccountName $_.Usuario -UserPrincipalName $_.Email -Path $_.RutaOU -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true

}

Cambiar múltiples contraseñas

Get-ADUser -Filter * -SearchBase «OU=TempUsers,DC=dominio,DC=local» | ForEach-Object {

    Set-ADAccountPassword -Identity $_ -NewPassword (ConvertTo-SecureString «Temporal123!» -AsPlainText -Force)

}

Consultas y filtros útiles

 

Buscar usuarios inactivos en los últimos 90 días

Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 90.00:00:00 | Select-Object Name, LastLogonDate

Usuarios bloqueados actualmente

Search-ADAccount -LockedOut | Select-Object Name, SamAccountName

Buscar duplicados por dirección de correo

Get-ADUser -Filter * -Properties EmailAddress | Group-Object EmailAddress | Where-Object { $_.Count -gt 1 }

Buscar todos los objetos de un tipo específico (como Impresoras)

Get-ADObject -Filter ‘ObjectClass -eq «printQueue»‘ -SearchBase «DC=dominio,DC=local»

Consultar miembros de todos los grupos de seguridad

Get-ADGroup -Filter ‘GroupCategory -eq «Security»‘ | ForEach-Object {

  Get-ADGroupMember $_ | Select-Object Name, SamAccountName, @{Name=»Grupo»;Expression={$_.DistinguishedName}}

}

Gestión de GPOs desde PowerShell

 

Listar todas las GPOs

Get-GPO -All

Crear una nueva GPO

New-GPO -Name «BloqueoAutomaticoPantalla» -Comment «Bloqueo tras 10 minutos de inactividad»

Enlazar una GPO a una OU

New-GPLink -Name «BloqueoAutomaticoPantalla» -Target «OU=Usuarios,DC=dominio,DC=local» -LinkEnabled Yes

Ver configuraciones específicas de una GPO

Get-GPOReport -Name «BloqueoAutomaticoPantalla» -ReportType Html -Path C:\Informes\bloqueo.html

Aplicar backup y restore de GPOs

Backup-GPO -Name «SeguridadTI» -Path «C:\Backups\GPOs»

Restore-GPO -Name «SeguridadTI» -Path «C:\Backups\GPOs»

Geeknetic PowerShell y Active Directory: Los Comandos Más Importantes para Administradores Exigentes 2

Administración avanzada

 

Listar todos los controladores de dominio y su estado

Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, OperatingSystem, IsGlobalCatalog

Elevar un servidor a controlador de dominio

Install-ADDSDomainController -DomainName «dominio.local» -InstallDns -Credential (Get-Credential) -SiteName «Default-First-Site-Name»

Crear OU y delegar permisos

New-ADOrganizationalUnit -Name «Proyectos» -Path «DC=dominio,DC=local»

$ou = «OU=Proyectos,DC=dominio,DC=local»

$group = Get-ADGroup «TI»

dsacls $ou /G «$($group.SamAccountName):LCRP»

Migración y niveles funcionales

 

Ver esquema y nivel funcional del dominio

Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion

Get-ADDomain | Select-Object DomainMode

Get-ADForest | Select-Object ForestMode

Migración: preparar dominio y bosque

Desde ISO o medio de instalación del nuevo sistema (en cmd, no PowerShell):

adprep /forestprep

adprep /domainprep

Subir nivel funcional (solo si todos los DCs ya corren nueva versión)

Set-ADDomainMode -Identity «dominio.local» -DomainMode Windows2016Domain

Set-ADForestMode -Identity «dominio.local» -ForestMode Windows2016Forest

Otros comandos de PowerShell interesantes

 

Habilitar la papelera de reciclaje de AD

Enable-ADOptionalFeature ‘Recycle Bin Feature’ -Scope ForestOrConfigurationSet -Target ‘dominio.local’

Obtener la OU de todos los usuarios

Get-ADUser -Filter * | Select-Object Name, DistinguishedName

Exportar todos los grupos de un usuario

Get-ADUser cruiz -Properties MemberOf | Select-Object -ExpandProperty MemberOf

Desactivar cuentas que no han iniciado sesión en 6 meses

Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 180.00:00:00 | Disable-ADAccount

Buscar objetos que fueron modificados hoy

Get-ADObject -Filter * -Properties whenChanged | Where-Object { $_.whenChanged -gt (Get-Date).Date }