Ha salido la necesidad de exportar todos los usuarios de nuestro directorio activo con un numero concreto de campos. Se ha decidido hacerlo con PowerShell.
Entre las pocas cosas que muestra se ve si el usuario esta bloqueado o deshabilitado.
· Export-ADUsers.ps1: conecta con el
PDCEmulator del dominio en el que se ejecuta y exporta todos los usuarios a un
fichero de valores separados por tabulador (el script permite pasarle el
parámetro -Delimiter para especificar otro delimitador). La ruta y nombre del
fichero de exportación se puede pasar como parámetro u omitirse; si se
omite, se llamará yyyyMMdd_HHmm_Export-ADUsers.tab y estará en la misma carpeta
del script (yyyyMMdd_HHmm se refiere a la fecha y hora en ese formato; por
ejemplo 19 de Mayo de 2015 a las 14:30 sería 20150519_1430). Para no tener
problemas con acentos, eñes, etc., el fichero de exportación está codificado
como Unicode. La columna con la OU contiene el nombre distintivo
(distinguishedName) de la OU en la que está el usuario.
Copiar en un Fichero con el nombre "Export-ADUsers.ps1" el siguiente texto:
<#
.Synopsis
Exporta a un fichero de valores separados los usuarios del dominio
.DESCRIPTION
El presente script exporta a un fichero de valores separados por tabulador, o el
caracter que se especifique, los atributos Name, sAMAccountName, Enabled,
LockedOut, mail, EmployeeID y OU (el nombre distintivo de la OU) de los usuario
del dominio en el que se ejecuta.
.PARAM ExportFile
Es la ruta y nombre del fichero (pueden usarse rutas absolutas o relativas así
como sólo el nombre si el inductor de Powershell está situado en la carpeta donde
se ubicará el fichero). Se trata de un fichero de valores separados por tabulador
o el caracter que se pase como parametro delimiter.
Si se omite, este parámetro tiene el valor yyyyMMdd_HHmm_Export-ADUsers.tab con
la ruta donde está ubicado el script (si el script está en c:\Scripts el fichero será
c:\Scripts\20150519_1430_Export-ADUser.tab).
.PARAM Delimiter
Caracter delimitador del fichero de exportación. Si se omite será el tabulador.
.EXAMPLE
PS C:\Scripts> .\Export-ADUsers.ps1
Se exportan los usuarios al fichero de valores separados por tabulador
c:\Scripts\20150519_1423_Export-ADUser.tab
.EXAMPLE
PS C:\tmp> .\Export-ADUsers.ps1 -ExportFile c:\tmp\Usuarios.csv -Delimiter ","
PS C:\PStest> .\Export-ADUsers.ps1 -ExportFile c:\PSTest\Usuarios.csv -Delimiter ","
Se exportan los usuaios al fichero de valores separados por comas
c:\ListadosAD\Usuarios.csv
.NOTES
Requiere el módulo de Active Directory de Powershell
#>
param(
$ExportFile="$(Split-Path -Path $Myinvocation.MyCommand.Path -Parent)\$(Get-Date -Format "yyyyMMdd`_HHmm")`_Export-ADUsers.tab",
$Delimiter = "`t"
)
If((Get-Module ActiveDirectory) -eq $null){Import-Module ActiveDirectory}
$Users = @()
$DC = (Get-ADDomain).PDCEmulator
$Properties = "Name,sAMAccountName,Enabled,LockedOut,mail,EmployeeID" -split ","
Get-AdUser -Filter * -Server $DC -Properties $Properties | ForEach{ `
$User = New-Object PsCustomObject
ForEach($Property In $Properties)
{
Add-Member -InputObject $User -MemberType NoteProperty -Name $Property -Value $_.$Property
}
$tempOU = $_.DistinguishedName -Replace "\\,",[char]20
$arrOU = $tempOU -split ","
$OU = $arrOU[1..($arrOU.Count - 1)] -Replace [char]20,"\,"
Add-Member -InputObject $User -MemberType NoteProperty -Name OU -Value "$($OU)"
$USers += $User
}
$Users | Export-Csv -Path "$ExportFile" -Encoding Unicode -Delimiter $Delimiter -NoTypeInformation -Force
La ejecución:
Es posible que previamente tengas que hacer:
Luego ya será bastante fácil trabajar con esta información desde por ejemplo un Excel:
Con las Window 8 viene una herramienta para trabajar pon ps1
==========
Una opción básica de sacar un mayor número de información con un solo comando podría ser:
get-aduser -Filter * | Export-csv c:\tmp\usuarios.csv
===========
Unos comandos sencillo que nos pueden ayudar a localizar usuarios:
*Todos los usuarios y sus propiedades:
Get-ADUser -Filter * -Properties *
*Para un usuario hay que poner el contenido del campo samAccountName no el de UserPrincipalName:
Get-ADUser Fernando.sanchez.alons -Properties *
Gon. Mayo 2015