我将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
}
永远找我,找到“。”从哈希表中提取特定值的表示法。我做了文本解析,但是我知道这不是正确的做法,最终找到了点符号的文档。我希望记录下这里可以节省一些时间!
答案 0 :(得分:0)
您确定它确实没有返回该信息吗?您是否尝试将命令汇总到Get-Member
或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
正常调用仅产生四个属性:Mode
,LastWriteTime
,Length
和Name
。但是,还有更多,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