En este post vamos a exportar mediante Powershell los usuarios de Directorio Activo a un archivo CSV. Este proceso puede seros útil cuando estéis moviendo usuarios de un dominio a otro para lo cual necesitareis un script de importación que os pondré en el próximo post.
Aquí os va el script:
#Path base donde dejar todos los ficheros y realizar la búsqueda de los que se necesiten.
#Aqui debe de residir el script.
#Ejemplo C:\Script\*.*
$path
=
Split-Path
-parent
«c:\script\*.*»
#Fecha para el TimeStamp del Log.
$LogDate
=
get-date
-f
yyyyMMddhhmm
#Ubicacion de los ficheros CSV y Log
#Deben de estar en la misma ubicacion que el script.
$csvfile
=
$path
+
«\ALLADUsers_$logDate.csv»
#Importamos el módulo de Acive Directory
Import-Module
ActiveDirectory
#Path DN donde residen los usuarios a exportar
#Ejemplo «OU=Usuarios,DC=dominio,DC=local»
$SearchBase
=
«DC=dominio,DC=local»
#Get Admin accountb credential
$GetAdminact
=
Get-Credential
#Controlador de dominio
#Ejemplo DC1
$ADServer
=
‘DC1’
#Buscamos todos los usuarios basados en los parámetros anteriores
$AllADUsers
=
Get-ADUser
-server
$ADServer
-Credential
$GetAdminact
-searchbase
$SearchBase
-Filter
*
-Properties
*
#Filtramos atributos mostrar
$AllADUsers
|
Select-Object @{Label =
«Nombre»;Expression = {$_.GivenName}},
@{Label =
«Apellidos»;Expression = {$_.Surname}},
@{Label =
«DisplayName»;Expression = {$_.DisplayName}},
@{Label =
«SAM»;Expression = {$_.sAMAccountName}},
@{Label =
«Direccion»;Expression = {$_.StreetAddress}},
@{Label =
«Ciudad»;Expression = {$_.City}},
@{Label =
«Estado»;Expression = {$_.st}},
@{Label =
«Codigo Postal»;Expression = {$_.PostalCode}},
@{Label =
«Pais/Region»;Expression = {if (($_.Country -eq
‘ES’) ) {‘España’} Else {»}}},
@{Label =
«Titulo»;Expression = {$_.Title}},
@{Label =
«Compañia»;Expression = {$_.Company}},
@{Label =
«Descripcion»;Expression = {$_.Description}},
@{Label =
«Departamento»;Expression = {$_.Department}},
@{Label =
«Oficina»;Expression = {$_.OfficeName}},
@{Label =
«Telefono»;Expression = {$_.telephoneNumber}},
@{Label =
«Email»;Expression = {$_.Mail}},
@{Label =
«Administrador»;Expression = {%{(Get-AdUser
$_.Manager -server $ADServer
-Properties
DisplayName).DisplayName}}},
@{Label =
«Estado de cuenta»;Expression = {if (($_.Enabled -eq
‘TRUE’) ) {‘Enabled’} Else {‘Disabled’}}},
@{Label =
«Ultimo inicio de sesion»;Expression = {$_.lastlogondate}} |
#Exportamos a CSV
Export-Csv
-Path
$csvfile
-NoTypeInformation
Muy util, muchas gracias.
Hola Juan,
2 cosas que he visto:
Para poder ejecutarse correctamente el script es necesario tener el ActiveDirectory module for windows powershell que se instala como una caracteristica dentro de las RSAT. No se si en w2016 ha cambiado pero no estaría mal que lo añadieses como prerequisitio para la ejecución del script. En w2012 me dio error por esto.
Hace unos meses estuve haciendo cosas similares de importación de multiples nuevos usuarios en w2012.
Este script no valdría para mantener las passwords de los usuarios existentes, como sabes las password es un campo especial para AD, encriptado, y esto es un contratiempo importante en entornos corporativos grandes. Realemtne no he encontrado nada para que exporte este campo password pero sin embargo si que lo encontre para importar usuarios si conoces la password.
Saludos