Cómo recuperar alias de correo electrónico y CN para todos en un grupo de anuncios usando PowerShell

StackOverflow https://stackoverflow.com/questions/5861816

Pregunta

Estoy usando PowerShell con los CMDLETS de AD Quest.

Puedo usar el cmdlet Get-Qadgroupmember para obtener una lista de todos en un grupo determinado. Hasta ahora todo bien, pero también me gustaría recibir su alias de correo electrónico. Todo lo que se devuelve actualmente es algo así como:

Name      Type  DN
----      ----  --
Jane Doe  User  CN=Jane Doe,OU=Employee,DC=companyname,DC=com
Job Blow  User  CN=Joe Blow,OU=Employee,DC=companyname,DC=com

Intenté usar Get -Qaduser con el indicador -includeAllProperties, pero todavía solo obtengo los campos anteriores y no sé cómo obtener los datos devueltos que la documentación dice que se almacena en caché en la computadora.

Cualquier ayuda sería apreciada.

ACTUALIZAR

Terminé usando "Seleccionar" similar a la siguiente:

$everyone = Get-QADGroupMember "All employees" | select firstname, lastname, email

Y eso consiguió todo lo que necesitaba en una variedad de hashtables. En ese momento, es fácil hacer lo que sea necesario al iterando a través de todos con código como:

for ($i=0; $i -le $everyone .length-1; $i++)
{
    write-host $everyone[$i].email
}

Me llevó una eternidad encontrar el "." notación para sacar valores específicos de la hashtable. Hice un análisis de texto y eso funcionó, pero sabía que esa no podía ser la forma correcta de hacerlo y finalmente encontré documentación sobre la notación del punto. ¡Espero que documentar eso aquí le ahorre a alguien más tiempo!

¿Fue útil?

Solución

¿Estás seguro de que realmente no devuelve esa información? ¿Has intentado meter el comando en Get-Member o Format-List -Force *? PowerShell se puede configurar para mostrar solo unas pocas propiedades de los elementos y no todos los cuales podrían ser el caso aquí.

Puede seleccionar propiedades usando Select-Object o solo select Si Konw, están allí, aunque PowerShell no los muestra de forma predeterminada:

Some-Command | select Name, Type, DN, SomeOtherProperty

Puedes ver esto por ejemplo con Get-ChildItem también:

PS Home:\> gci *.ps1


    Directory: C:\Users\Joey


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2011-04-27     18:50        169 format.ps1
-a---        2011-04-26     18:36       1064 Untitled1.ps1
-a---        2011-04-27     18:41         69 x.ps1
-a---        2011-04-23     19:58         91 y.ps1

La invocación normal solo produce cuatro propiedades: Mode, LastWriteTime, Length y Name. Sin embargo, hay mucho más, como Get-Member espectáculos.

PS Home:\> gci *.ps1|gm -MemberType Property


   TypeName: System.IO.FileInfo

Name              MemberType Definition
----              ---------- ----------
Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
CreationTime      Property   System.DateTime CreationTime {get;set;}
CreationTimeUtc   Property   System.DateTime CreationTimeUtc {get;set;}
Directory         Property   System.IO.DirectoryInfo Directory {get;}
DirectoryName     Property   System.String DirectoryName {get;}
Exists            Property   System.Boolean Exists {get;}
Extension         Property   System.String Extension {get;}
FullName          Property   System.String FullName {get;}
IsReadOnly        Property   System.Boolean IsReadOnly {get;set;}
LastAccessTime    Property   System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property   System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime     Property   System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc  Property   System.DateTime LastWriteTimeUtc {get;set;}
Length            Property   System.Int64 Length {get;}
Name              Property   System.String Name {get;}

Otros consejos

Recuerde que select-object tira el objeto y genera otros nuevos.

Entonces en este ejemplo:

$test = get-qaduser atestuser | select-object name

$ La prueba será un PScustomObject (System.Object) que contiene solo el nombre.

¿Qué quieres hacer con los datos? Salir a la consola ... a un archivo?

Haría algo como esto:

get-qadgroupmember "domain users" | format-table name, displayname, email

O

get-qadgroupmember "domain users" | select-object name, displayname, email | Export-Csv c:\acsvfile.csv
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top