jueves, 21 de mayo de 2015

PowerShell. Actualizar un campo del Directorio Activo.

Nos ha llegado el momento de cruzar la información de RRHH con nuestro AD. Para tener un campo común único usaremos el Employee, con lo que tendremos que actulizar este campo de nuestro AD.

Set-EmployeeID.ps1: conecta con el PDCEmulator del dominio en el que se ejecuta y cambia el valor del atributo EmployeeID, de los usuarios contenidos en el fichero de importación, al que haya en ese mismo fichero. El fichero de importación es un fichero de valores separados por tabulador (el script permite pasarle el parámetro -Delimiter para especificar otro delimitador). Este fichero contiene dos columnas sAMAccountName y EmployeeID. Es necesario ser administrador del dominio, o administrador delegado con derecho a cambiar el atributo EmployeeID, para que el script funcione.

Crea el fichero "Set-EmployeeID.ps1" con el texto:

<#
.Synopsis
   Actualiza el EmployeeID de los usuarios según un fichero de valores separados
.DESCRIPTION
   El presente script actualiza el atributo EmployeeID de los usuarios que están
   en el fichero de valores separados por tabulador (de forma predeterminada, se
   se pueden usar otros separadosres). En el fichero hay dos columnas sAMAccountName
   y EmployeeID. El script busca dad uno de los usuarios según su sAMAccountName y
   actualiza su atributo EmployeeID al valor que indica la columan EmployeeID del
   fichero. Esta actualización la hace con el objeto que se encuentra en el PDCEmulator
   del dominio al que pertenece el equipo desde el que se lanza el script.
.PARAM ImportFile
   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 ubica 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 Set-EmployeeID.tab con la ruta donde
   está ubicado el script (si el script está en c:\Scripts el fichero será
   c:\Scripts\Set-EmployeeID.tab).
   El fichero contiene dos columnas sAMAccountName (nombre pre Windows 2000 del usuario)
   y EmployeeID.
.PARAM Delimiter
   Caracter delimitador del fichero de entrada. Si se omite será el tabulador.
.EXAMPLE
   PS C:\Scripts> .\Set-EmployeeID.ps1
   Se actualiza el atributo EmployeeID en base al fichero de valores separados por
   tabulador c:\Scripts\Set-EmployeeID.tab
.EXAMPLE
   PS C:\Scripts> .\Set-EmployeeID.ps1 -ImportFile c:\ListadosAD\EmployeeID.csv -Delimiter ","
   Se actualiza el atributo EmployeeID en base al fichero de valores separados por comas
   c:\ListadosAD\EmployeeID.csv
.NOTES
   Requiere el módulo de Active Directory de Powershell
#>

param(
    [String] $ImportFile="$(Split-Path -Path $Myinvocation.MyCommand.Path -Parent)\Set-EmployeeID.tab",
    [String] $Delimiter = "`t"
    )

If((Get-Module ActiveDirectory) -eq $null){Import-Module ActiveDirectory}
$DC = (Get-ADDomain).PDCEmulator
$Users = Import-Csv -Path "$ImportFile" -Delimiter $Delimiter
ForEach($User In $Users)
{
    Set-ADUser -Identity $User.sAMAccountName -EmployeeID $User.EmployeeID -Confirm:$false
}


El fichero "EmployeeID.csv" que es donde tendremos el campo usuario y número empleado con el formato:

Con lo que tendremos un resultado como:






GoN Mayo 2015

No hay comentarios: