Comment récupérer alias e-mail et le CN pour tout le monde dans un groupe AD en utilisant PowerShell

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

Question

J'utilise PowerShell avec les cmdlets AD Quest.

Je peux utiliser l'applet de commande Get-QADGroupMember pour obtenir une liste de tous dans un groupe donné. Jusqu'à présent, si bon mais je voudrais obtenir leur alias de courriel ainsi. Tout ce qui est retourné est actuellement quelque chose comme:

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

J'ai essayé d'utiliser get-QADUser avec le drapeau de -includeallproperties mais je comprends toujours que les champs ci-dessus retourné et je ne sais pas comment obtenir les données renvoyées qui dit la documentation est mis en cache sur l'ordinateur.

Toute aide serait appréciée.

UPDATE

Je fini par utiliser "select" similaire à ci-dessous:

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

Et que tout a je besoin dans un tableau de hashage. À ce moment-là, il est facile de faire tout ce qui est nécessaire par Itère tout le monde avec le code comme:

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

Il m'a fallu une éternité pour trouver le « » notation pour tirer des valeurs spécifiques de la table de hachage. Je l'ai fait l'analyse de texte et qui a fonctionné, mais je savais que ne pouvait pas être la bonne façon de le faire et a finalement trouvé la documentation sur la notation des points. J'espère que la documentation qui sauve ici quelqu'un d'autre quelque temps!

Était-ce utile?

La solution

Êtes-vous sûr qu'il ne retourne pas vraiment cette information? Avez-vous essayé redirigeant la commande dans Get-Member ou Format-List -Force *? PowerShell peut être configuré pour afficher uniquement quelques propriétés des éléments et non pas tout ce qui pourrait être le cas ici.

Vous pouvez sélectionner des propriétés à l'aide Select-Object ou tout simplement select si vous konw ils sont là, même si PowerShell ne les affiche pas par défaut:

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

Vous pouvez voir par exemple avec Get-ChildItem aussi:

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

L'invocation normale ne produit que quatre propriétés: Mode, LastWriteTime, Length et Name. Cependant, il y a beaucoup plus, comme le montre la Get-Member.

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;}

Autres conseils

Rememember que les bandes de sélection d'objets vers le bas de l'objet et génère de nouvelles.

Ainsi, dans cet exemple:

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

$ test sera un PSCustomObject (System.Object) ne contenant que le nom.

Que voulez-vous faire avec les tâches données? Sortie à la console ... à un fichier?

Je ferais quelque chose comme ceci:

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

ou

get-qadgroupmember "domain users" | select-object name, displayname, email | Export-Csv c:\acsvfile.csv
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top