Comandos PowerShell para gestionar Active Directory: OU, usuarios, grupos y recursos compartidos

Informática15,36 KB

Gestión de Unidades Organizativas (OU) en Active Directory

Crear OU

  • Crear OU

New-ADOrganizationalUnit -name "nombre ou" -path "DC=equipo13,DC=es"

  • Crear OU sin protección contra eliminación

Añadimos: -ProtectedFromAccidentalDeletion $false

Ver contenido de una OU

  • Ver contenido de una OU

Get-ADObject -filter 'name -like "*"' -SearchBase "OU=asdfka,DC=equipo13,DC=es" -SearchScope Subtree

  • Para ver solo objetos hijos de una OU

Get-ADObject -filter 'name -like "*"' -SearchBase "OU=......." -SearchScope 1

  • Para ver las OU hijas de una OU

Get-ADOrganizationalUnit -filter 'name -like "*"' -SearchBase "OU=maria,DC=equipo13,DC=es" -SearchScope 1 | ft name, distinguishedname

  • Para ver todas las OU de un dominio

Get-ADObject -filter 'objectclass -eq "organizationalunit"'

  • Ver todas las OU

Get-ADOrganizationalUnit -filter 'name -like "*"' | ft name, distinguishedname

  • Ver información de todas las OU creadas en el dominio

Get-ADOrganizationalUnit -filter 'name -like "*"' | ft

Ver información de una OU

  • Ver información de una OU

Get-ADOrganizationalUnit -filter 'name -like "maria"'

Get-ADOrganizationalUnit -Identity "OU=maria,DC=equipo13,DC=es"

  • Ver toda la información de una OU

-Properties *

Eliminar una OU

Set-ADOrganizationalUnit -Identity 'OU=....,DC=e....' -ProtectedFromAccidentalDeletion $false

Remove-ADOrganizationalUnit -Identity 'OU=...,DC=..,DC=es'

Cambiar de nombre a una OU

Rename-ADObject -Identity "OU=maria,DC=equipo13,DC=es" -NewName "juana"

Mover una OU

Set-ADOrganizationalUnit -Identity "OU=maria,DC=equipo13,DC=es" -ProtectedFromAccidentalDeletion $false

Move-ADObject -Identity "OU=maria,DC=equipo13,DC=es" -TargetPath "OU=Siete Reinos,DC=equipo13,DC=es"

Set-ADOrganizationalUnit -Identity "OU=maria,OU=Siete Reinos,DC=equipo13,DC=es" -ProtectedFromAccidentalDeletion $true

Gestión de Usuarios en Active Directory

Crear usuario

  • Crear usuario con variable

$password = Read-Host "introduce contraseña" -AsSecureString

New-ADUser -Name ibai -Path "OU=maria,OU=Siete Reinos,DC=equipo13,DC=es" -AccountPassword $password -Enabled $true -PassThru

  • Crear usuario sin variable

New-ADUser -Name ibai -Path "OU=maria,OU=Siete Reinos,DC=equipo13,DC=es" -AccountPassword (Read-Host -AsSecureString "introduce contraseña") -Enabled $true -PassThru

Parámetros de creación de usuario

  • -AccountExpirationDate "14/05/2019"
  • -AccountExpirationDate "15:00"
  • -CannotChangePassword $true
  • -ChangePasswordAtLogon $true
  • -Enabled $true
  • -LogonWorkstation "w10-13,ws-2012-13"
  • -PasswordNeverExpires $true
  • -Path "OU=maria,DC=equipo13,DC=es"
  • -ProfilePath \\ws2012-13\perfilmovil$\jane_doe
  • -ScriptPath \\ws2012-13\netlogon\b.bat

Ver propiedades de usuarios

  • Ver todas las propiedades de un usuario

Get-ADUser -Identity ibai -Properties *

  • Ver propiedades que cumplen algunas características

Get-ADUser -filter 'name -like "a*"' | ft

Get-ADUser -filter * -SearchBase "OU=maria,OU=Siete Reinos,DC=equipo13,DC=es" | ft

  • Ver todos los usuarios de un dominio

Get-ADUser -filter * | ft

  • Ver a qué grupos pertenece un usuario

Get-ADUser ibai -Properties MemberOf

Contar usuarios

  • Contar usuarios de un dominio

(Get-ADUser -filter *).Count

  • Contar usuarios de una OU

(Get-ADUser -filter * -SearchBase "OU=maria,OU=Siete Reinos,DC=equipo13,DC=es").Count

  • Contar usuarios deshabilitados / habilitados

(Get-ADUser -filter * | Where {$_.Enabled -eq $false}).Count

(Get-ADUser -filter * | Where {$_.Enabled -eq "true"}).Count

Agregar y reemplazar atributos

  • Agregar atributos

Set-ADUser -Identity ibai -City Pamplona -Company Mapsa

Set-ADUser -Identity ibai -Add @{telephoneNumber = '123456'; otherTelephone = '622452432'}

  • Reemplazar atributos

Set-ADUser -Identity ibai -Replace @{telephoneNumber = '1234123'}

Set-ADUser -Identity ibai -Add @{telephoneNumber = '1234123'} -Remove @{telephoneNumber = '12345'}

Buscar usuarios que cumplan condiciones

Search-ADAccount -AccountDisabled -SearchBase "DC=equipo13,DC=es" | ft Name, DistinguishedName, LockedOut, Enabled -a

Search-ADAccount -AccountExpired

Search-ADAccount -AccountExpiring -DateTime "20/10/2019" (que expiran antes del 20)

Search-ADAccount -AccountExpiring -TimeSpan "40" (que expiran antes de 40 días)

Search-ADAccount -AccountInactive -DateTime "20/10/2019" | ft Name, LastLogonDate (cuentas que no han iniciado sesión desde el 20)

Search-ADAccount -AccountInactive -TimeSpan "400" -SearchBase "OU=sistemas,DC=equipo13,DC=es" | ft Name, LastLogonDate -a (cuentas que no han iniciado sesión en los últimos 400 días)

Search-ADAccount -LockedOut -SearchBase "DC=equipo13,DC=es" | ft Name, LockedOut -a

Search-ADAccount -PasswordNeverExpires

Search-ADAccount -PasswordExpired

Formato Timespan

DH:M:SF

  • D = días
  • H = horas
  • M = minutos
  • S = segundos
  • F = fracciones de segundo

Ejemplos:

  • -TimeSpan "2" en dos días
  • -TimeSpan "-2" en los dos días anteriores
  • -TimeSpan "4:00" en 4 horas

Habilitar y deshabilitar cuentas

  • Habilitar una cuenta

Enable-ADAccount -Identity ibai

Get-ADUser ibai

  • Deshabilitar una cuenta

Disable-ADAccount -Identity ibai

  • Deshabilitar todos los usuarios de una OU

Get-ADUser -SearchBase "OU=maria,DC=equipo13,DC=es" -filter * | Disable-ADAccount

Renombrar, borrar y cambiar contraseña

  • Renombrar una cuenta

Rename-ADObject -Identity "CN=ibai,CN=Users,DC=equipo13,DC=es" -NewName mory

  • Borrar una cuenta

Remove-ADUser ibai

Rename-ADObject -Identity "CN=ibai,CN=Users,DC=equipo13,DC=es"

Get-ADUser -filter 'name -like "ib*"' | Remove-ADUser

  • Asignar o cambiar contraseña de usuario

Set-ADAccountPassword -Identity "CN=ibai,CN=Users,DC=equipo13,DC=es" -NewPassword (Read-Host -AsSecureString "nueva contraseña") -PassThru

Set-ADAccountPassword -Identity ibai -PassThru -Reset

  • Desbloquear una cuenta

Unlock-ADAccount -Identity ibai

Mover usuarios

  • Mover un usuario

Move-ADObject -Identity "CN=ibai,CN=Users,DC=equipo13,DC=es" -TargetPath "OU=Valar Morgulis,DC=equipo13,DC=es"

  • Mover usuarios cuya descripción es asir

Get-ADUser -filter 'Description -eq "asir"' | Move-ADObject -TargetPath "OU=Valar Doheris,OU=Valar Morghulis,DC=equipo13,DC=es"

  • Mover todos los usuarios de una OU a otra OU

Get-ADUser -filter * -SearchBase "OU=Valar Morgulis,DC=equipo13,DC=es" | Move-ADObject -TargetPath "OU=Not_Today,DC=equipo13,DC=es"

Establecer horario de inicio de sesión

Horario de inicio de sesión de 6 a 11 y de 14 a 17 h.

87654321161514131211109023222120191817
1111111111

224, 231, 1

128, 64, 32, 16, 8, 4, 2, 1

Domingo, lunes, martes, miércoles, jueves, viernes, sábado

[byte[]]$horario = @(0,0,0D, 224,231,1L, 224,231,1M, 224,231,1X, 224,231,1J, 224,231,1V, 0,0,0S)

Get-ADUser ibai | Set-ADUser -Replace @{logonHours = $horario}

Gestión de Grupos en Active Directory

Crear grupo

  • Crear grupo en una OU y ámbito global

New-ADGroup -name grupo -GroupScope Global -path "OU=ventas,DC=equipo13,DC=es"

Si no especificamos el parámetro GroupCategory, se creará un grupo de tipo Seguridad.

Ver información de un grupo

Get-ADGroup -Identity grupo

Get-ADGroup -filter 'name -like "grupo"'

Get-ADGroup -filter 'name -like "grupo" -or name -like "*dos"' | ft

Get-ADGroup -filter 'name -like "hola"' -Properties * | ft name, cn, whencreated -a

Ver miembros de grupos

Get-ADGroupMember -Identity "CN=....." | ft name, distinguishedname -a

  • Ver atributos según el tipo de objeto miembro

Get-ADGroupMember -Identity "CN=ggrupo1,OU=Ejgrupos,DC=equipo13,DC=es" | Where-Object {$_.objectClass -eq "user"} | ForEach {Get-ADUser -Identity $_} | ft name, enabled -a

Donde el objeto sea igual a usuario, recorremos todos los usuarios y mostramos su información.

Modificar grupos

  • Modificar la información de un grupo

Set-ADGroup -Identity "CN=ggrupo1,OU=Ejgrupos,DC=equipo13,DC=es" -Description "grupo uno"

  • Modificar la información de más de un grupo

Get-ADGroup -filter 'name -like "gosgr" -or name -like "grdos"' | Set-ADGroup -Description "grupos de prueba"

Get-ADGroup -filter 'name -like "gosgr" -or name -like "grdos"' -Properties * | ft name, description -a

  • Modificar atributos que no son básicos

@{parámetro = valor} Remove, Add, Replace y Clear

Set-ADGroup -Identity "CN=ggrupo1,OU=Ejgrupos,DC=equipo13,DC=es" -Add @{displayName = "grupo-1"}

Set-ADGroup -Identity "CN=ggrupo1,OU=Ejgrupos,DC=equipo13,DC=es" -Clear displayName

Set-ADGroup -Identity "CN=ggrupo1,OU=Ejgrupos,DC=equipo13,DC=es" -Remove @{description = "grupos de prueba"}

Agregar miembros a grupos

  • Agregar uno o más usuarios a un grupo

Add-ADGroupMember -Identity "CN=ggrupo1,OU=Ejgrupos,DC=equipo13,DC=es" -Members ibai,eneko

  • Agregar un usuario a dos grupos

Add-ADPrincipalGroupMembership -Identity ibai -MemberOf ggrupo1,ggrupo2

Get-ADUser -filter 'name -like "ibai"' -Properties * | Select name, memberof -a

  • Añadir todos los miembros de una OU a un grupo

Get-ADUser -SearchBase "OU=Ejgrupos,DC=equipo13,DC=es" -filter {objectClass -eq "user"} | ForEach {Add-ADGroupMember -Identity grupos2 -Members $_}

Get-ADUser -SearchBase "OU=Ejgrupos,DC=equipo13,DC=es" -filter {objectClass -eq "user"} -Properties * | ft name, memberof -a

  • Copiar los miembros de un grupo a otro

Get-ADGroupMember -Identity ggrupo1 | ForEach {Add-ADGroupMember -Identity ggrupo2 -Members $_}

Get-ADUser -SearchBase "OU=ggrupo2,DC=equipo13,DC=es" -filter {objectClass -eq "user"} -Properties * | ft name, memberof -a

Anidamiento de grupos

  • Anidamiento de grupos

Add-ADGroupMember -Identity "CN=grdos,OU=grupos,DC=equipo17,DC=es" -Members dosgr

  • Ver miembros de grupos anidados

Get-ADGroupMember -Identity grdos -Recursive | ft name, distinguishedname -a

  • Ver de qué grupos son miembros

Get-ADGroupMember -Identity grdos -Recursive | Where-Object {$_.objectClass -eq "user"} | ForEach {Get-ADUser -Identity $_ -Properties *} | ft name, distinguishedname, memberof -a

Eliminar miembros y grupos

  • Eliminar miembros de un grupo

Remove-ADGroupMember -Identity grdos -Members cuatro,dosgr

  • Eliminar a un usuario de varios grupos

Remove-ADPrincipalGroupMembership -Identity cinco -MemberOf grdos,dosgr

  • Eliminar/borrar un grupo

Remove-ADGroup -Identity gdos

  • Eliminar más de un grupo

Get-ADGroup -filter 'name -like "*dos"' -SearchBase "OU=grupos,DC=equipo17,DC=es" | Remove-ADGroup -Confirm:$false

Permisos y Recursos Compartidos

Visualizar recursos compartidos

Net share

Get-SmbShare

Visualizar propiedades de un recurso compartido

Get-SmbShare -Name carpeta1 | fl -Property *

Compartir una carpeta

  • Compartir desde consola

Net share carpeta2=C:\carpeta-2

  • Compartir con PowerShell

New-SmbShare -Name "carpeta1" -Path "C:\car_com"

  • Crear carpeta

New-Item -Name "car_com" -Path "C:\" -ItemType "Directory"

Parámetros de SmbShare

  • ConcurrentUserLimit
  • Description
  • NoAccess
  • ReadAccess
  • ChangeAccess
  • FullAccess

Modificar recursos compartidos

  • Modificar el número de usuarios que pueden conectarse a la vez a un recurso

Net share carpeta-1 /users:20

  • Modificar la configuración de un recurso compartido

Set-SmbShare -Name carpeta1 -Description "carpeta compartida"

  • Visualizar y modificar los permisos de un recurso compartido

Grant-SmbShareAccess -Name carpeta1 -AccountName grupo -AccessRight Change

Revoke-SmbShareAccess -Name carpeta1,carpeta2,carpeta3 -AccountName juanito,manuel -Force

Block-SmbShareAccess -Name carpeta1,carpeta2 -AccountName grupo -Force

Unblock-SmbShareAccess -Name carpeta2 -AccountName grupo -Force

Get-SmbShareAccess -Name carpeta1

Dejar de compartir un recurso

  • Desde consola

Net share carpeta1 /delete

Net share C:\carpeta1 /delete

Net share datos \\ws2012-13 /delete

  • Desde PowerShell

Remove-SmbShare -Name carpeta1,carpeta2 -Force

Conectar un recurso compartido asignándole letra de unidad

  • Desde consola

Net use W: \\ws2012-13\datos2

  • Desde PowerShell

New-PSDrive -Name "Z" -PSProvider FileSystem -Root '\\ws2012-13\carpeta1' -Persist

-Persist especifica que la conexión no se eliminará en posteriores sesiones.

Desconectar un recurso compartido

  • Desde consola

Net use W: /delete

  • Desde PowerShell

Remove-PSDrive -Name Z

Mostrar carpetas compartidas administrativas

Get-SmbShare -Special 1

Descargar

PDF Word HTML