3

我将 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

我尝试使用带有 -includeallproperties 标志的 get-qaduser,但我仍然只返回上述字段,而且我不知道如何获取文档说缓存在计算机上的返回数据。

任何帮助,将不胜感激。

更新

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

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

这将我需要的所有东西都放入了一个哈希表数组中。那时,通过使用以下代码遍历每个人,很容易做任何需要的事情:

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

花了我永远找到“。” 用于从哈希表中提取特定值的符号。我进行了文本解析并且效果很好,但我知道这不是正确的方法,最终找到了关于点符号的文档。我希望记录在这里可以节省其他人一些时间!

4

2 回答 2

0

您确定它真的不返回该信息吗?您是否尝试过将命令输入Get-Memberor Format-List -Force *?PowerShell 可以配置为仅显示项目的一些属性,而不是此处可能出现的所有情况。

Select-Object您可以使用或仅在您知道它们存在时选择属性select,即使 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

正常调用仅产生四个属性:ModeLastWriteTime和。然而,还有更多,如图所示。LengthNameGet-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;}
于 2011-05-03T05:03:07.020 回答
0

请记住,选择对象会剥离对象并生成新对象。

所以在这个例子中:

$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
于 2011-05-03T08:34:25.337 回答