lunes, 2 de abril de 2018

Consultar atributos de Usuario en Directorio Activo

Nace la necesidad de listar para varios usuarios del Dominio unas propiedades o atributos especificos:

  • employeeID                (N28 en la table de propiedades)
  • employeeIDNumber   (N29 en la table de propiedades)
  • mail                             (No listada en la table de propiedades, es de exchange)  
  • mailNickname            (No listada en la table de propiedades, es de exchange)  
  • bnso365upn                (No listada en la table de propiedades, es de exchange)  
 Esta vez crearemos un PS1(Script de Powershell) en el cual utilizaremos un archivo .TXT que contendra el listado de los nombres de usuario de los cuales queremos consultar sus propiedades, quedando de la siguiente manera:

Import-Module ActiveDirectory
#capturamos el contenido del archivo con el listado de usuarios
$csvcontent = get-content user.txt
#definimos nuestro archivo de salida
$logfile="listadoAtributos.txt"
#Iniciamos el proceso de consulta y escritura en nustro archivo definido
foreach ($user in $csvcontent)
{
#creamos una variable para cada propiedad
$emID =get-aduser -Filter {SamAccountName -eq $user} -Properties * | select employeeID -ErrorAction SilentlyContinue
$emIDN=get-aduser -Filter {SamAccountName -eq $user} -Properties * | select employeeIDNumber -ErrorAction SilentlyContinue
$mail=get-aduser -Filter {SamAccountName -eq $user} -Properties * | select mail -ErrorAction SilentlyContinue
$mailNick=get-aduser -Filter {SamAccountName -eq $user} -Properties * | select mailNickname -ErrorAction SilentlyContinue
$bns365=get-aduser -Filter {SamAccountName -eq $user} -Properties * | select bnso365upn -ErrorAction SilentlyContinue
#escribimos todas las variables consultadas separadas por ,
out-file $logfile -input "$user,$emID, $emIDN, $mail, $mailNick, $bns365" -append
}#fin foreach

El anterior Script se debera ejecutar desde una maquina que tenga el cmdlet de Active Directory y nos generara el archivo listadoAtributos.txt

Si requerimos adicionar otras propiedades solo debemos copiar y pegar una de las lineas de la consulta de propiedades, cambiar el nombre de la variable y reemplazar despues del  select el nombre de la propiedad asi:
 Aqui estamos consultando la propiedad employeeID
$emID =get-aduser -Filter {SamAccountName -eq $user} -Properties * | select employeeID -ErrorAction SilentlyContinue
 Queremos adicionar la propiedad lastLogon
cambiamos  $emID por $last (o cualquier nombre que creamos comveniente) y cambiamos employeeID  por lastLogon
$last =get-aduser -Filter {SamAccountName -eq $user} -Properties * | select lastLogon -ErrorAction SilentlyContinue

y para introducirlo en nuestro archivo de salida solo adicionamos la variable nueva con una coma en la linea:
out-file $logfile -input "$user,$emID, $emIDN, $mail, $mailNick, $bns365" -append
Quedando:
out-file $logfile -input "$user,$emID, $emIDN, $mail, $mailNick, $bns365,  $last" -append


Listado de Propiedades usuario Directorio Activo

1 accountExpires 54 MNSLogonAccount
2 AccountLockoutTime 55 MobilePhone
3 AccountNotDelegated 56 Modified
4 AllowReversiblePasswordEncryption 57 modifyTimeStamp
5 BadLogonCount 58 msDS-User-Account-Control-Computed
6 badPasswordTime 59 msExchHomeServerName
7 badPwdCount 60 msExchUserAccountControl
8 CannotChangePassword 61 Name
9 CanonicalName 62 nTSecurityDescriptor
10 Certificates 63 ObjectCategory
11 City 64 ObjectClass
12 CN 65 ObjectGUID
13 codePage 66 objectSid
14 Company 67 Office
15 Country 68 OfficePhone
16 countryCode 69 Organization
17 Created 70 OtherName
18 createTimeStamp 71 PasswordExpired
19 Deleted 72 PasswordLastSet
20 Department 73 PasswordNeverExpires
21 Description 74 PasswordNotRequired
22 DisplayName 75 POBox
23 DistinguishedName 76 PostalCode
24 Division 77 PrimaryGroup
25 DoesNotRequirePreAuth 78 primaryGroupID
26 dSCorePropagationData 79 ProfilePath
27 EmailAddress 80 ProtectedFromAccidentalDeletion
28 EmployeeID 81 pwdLastSet
29 EmployeeNumber 82 SamAccountName
30 Enabled 83 sAMAccountType
31 Fax 84 ScriptPath
32 GivenName 85 sDRightsEffective
33 HomeDirectory 86 ServicePrincipalNames
34 HomedirRequired 87 showInAddressBook
35 HomeDrive 88 SID
36 HomePage 89 SIDHistory
37 HomePhone 90 SmartcardLogonRequired
38 Initials 91 sn
39 instanceType 92 State
40 isDeleted 93 StreetAddress
41 LastBadPasswordAttempt 94 Surname
42 LastKnownParent 95 Title
43 lastLogoff 96 TrustedForDelegation
44 lastLogon 97 TrustedToAuthForDelegation
45 LastLogonDate 98 UseDESKeyOnly
46 lastLogonTimestamp 99 userAccountControl
47 LockedOut 100 userCertificate
48 lockoutTime 101 UserPrincipalName
49 logonCount 102 uSNChanged
50 LogonWorkstations 103 uSNCreated
51 Manager 104 whenChanged
52 mDBUseDefaults 105 whenCreated
53 MemberOf    

En la tabla anterior se lista las propiedades(Atributos) de un usuario en Directorio Activo, cabe aclarar que al integrarse con Exchange el listado crecera.

Espero a alguno le sea util este post
¡Hasta la proxima!


Si te fue útil la información "HAZ CLICK EN LA PUBLICIDAD DE GOOGLE"

 visitando nuestros anunciantes, agradeces nuestro trabajo...