2011-04-08 111 views
1

我試圖找到活動目錄的屬性: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 
} 

回答

3
 
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

0

使用get-member(別名爲gm)cmdlet來獲取所有的屬性和方法。像這樣,

$objItem | gm

另一種方法是將管的對象format-list(別名爲fl)小命令,這將不列出的方法。像這樣,

$objItem | fl *

+0

謝謝你的回答是匿名的。這樣做,我沒有得到「名稱」,「電話號碼」等,這些都是我想知道的。 – 2011-04-08 12:05:26

0

好的,之前的答案是「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

相關問題