PowerShell的Active Directory属性

问题描述:

我试图找到活动目录的属性:PowerShell的Active Directory属性

$strFilter = "(&(objectCategory=User))" 

$objDomain = New-Object System.DirectoryServices.DirectoryEntry 

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher 
$objSearcher.SearchRoot = $objDomain 
$objSearcher.PageSize = 1000 
$objSearcher.Filter = $strFilter 
$objSearcher.SearchScope = "Subtree" 

$colResults = $objSearcher.FindAll() 

foreach ($objResult in $colResults){ 
    $objItem = $objResult.Properties 

我可以调用$ objitem.name,但我不知道我有哪些访问其他属性。

我怎样才能找到我可以从$ objitem访问哪些属性?

编辑:

使用下面的答案,使用此解决方案:

foreach ($objResult in $colResults){ 
    ($colResults)[0].Properties.PropertyNames 
} 

 
foreach ($objResult in $colResults){ 
    $objResult.Properties | % {$_.propertynames} 
} 

应显示每个结果属性的钥匙。

+1

这将更快:'($ colResults)[0] .Properties.PropertyNames' – JasonMArcher 2011-04-08 15:59:15

+0

工程就像一个魅力。贾森说,这似乎更快。谢谢你们俩! – 2011-04-12 06:59:42

使用get-member(别名为gm)cmdlet来获取所有的属性和方法。像这样,

$objItem | gm

另一种方法是将管的对象format-list(别名为fl)小命令,这将不列出的方法。像这样,

$objItem | fl *

+0

谢谢你的回答是匿名的。这样做,我没有得到“名称”,“电话号码”等,这些都是我想知道的。 – 2011-04-08 12:05:26

好的,之前的答案是“Powershell”功能。如果你真的想知道你可以达到什么样的属性(类别用户这里),你必须看看架构。这是在Windows服务器上注册的对象,其注册为schmmgmt.dll COM对象。

C:\>regsvr32 c:\WINDOWS\system32\schmmgmt.dll 

JP

+0

PowerShell功能可让您获得答案。另外,我的系统当然没有schmmgmt.dll,所以PowerShell解决方案具有更少的依赖关系。 – JasonMArcher 2011-04-08 16:01:12

+0

好的,但是对于没有为给定对象赋值的属性会发生什么?您可以使用ADSIEDIT.MSC查看架构。如果您的计算机上没有安装管理工具。 – JPBlanc 2011-04-08 16:47:36