如何使用PowerShell为AD组中的每个人检索电子邮件别名和CN

时间:2011-05-02 19:53:58

标签: powershell active-directory cmdlets

我将PowerShell与Quest AD cmdlet一起使用。

我可以使用Get-QADGroupMember cmdlet获取给定组中每个人的列表。到目前为止这么好,但我想得到他们的电子邮件别名。目前返回的所有内容都是:

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

我尝试将get-qaduser与-includeallproperties标志一起使用,但我仍然只返回上面的字段,我不知道如何获取文档所说的缓存在计算机上的返回数据。

任何帮助都将不胜感激。

更新

我最终使用类似于下面的“选择”:

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

这使得我需要的所有东西都变成了一个哈希表数组。在这一点上,通过使用以下代码迭代每个人,很容易做任何需要:

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

永远找我,找到“。”从哈希表中提取特定值的表示法。我做了文本解析,但是我知道这不是正确的做法,最终找到了点符号的文档。我希望记录下这里可以节省一些时间!

2 个答案:

答案 0 :(得分:0)

您确定它确实没有返回该信息吗?您是否尝试将命令汇总到Get-MemberFormat-List -Force *? PowerShell可以配置为仅显示项目的一些属性,而不是所有可能的情况。

如果你知道他们在那里,你可以使用Select-Objectselect选择属性,即使PowerShell默认不显示它们:

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

您也可以使用Get-ChildItem查看此内容:

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

正常调用仅产生四个属性:ModeLastWriteTimeLengthName。但是,还有更多,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;}

答案 1 :(得分:0)

记住select-object剥离对象并生成新对象。

所以在这个例子中:

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

$ test将是仅包含名称的PSCustomObject(System.Object)。

您想要对数据做什么?输出到控制台...到文件?

我会做这样的事情:

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

或者

get-qadgroupmember "domain users" | select-object name, displayname, email | Export-Csv c:\acsvfile.csv