2011-05-02 31 views
3

我正在將PowerShell與Quest AD cmdlet一起使用。如何使用PowerShell檢索AD組中每個人的電子郵件別名和CN

我可以使用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國旗,但我仍然只得到上述領域回來,我不知道如何在返回的數據得到哪些該文檔說是緩存在計算機上。

任何幫助,將不勝感激。

UPDATE

我結束了使用 「選擇」 類似如下:

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

這得到了我需要到哈希表的數組的一切。在這一點上,通過迭代代碼所需的任何代碼很容易:

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

讓我永遠找到「。」用於從哈希表中提取特定值的符號。我做了文本解析,並且工作正常,但我知道這不可能是正確的做法,並最終在點符號上找到文檔。我希望記錄在這裏可以節省一些時間!

+0

@Joey 我不知道這些選項。我嘗試管道進入Format-List -Force *,這給了我足夠多的屬性。我現在只需要做一些數據按摩,我將擁有完成任務所需的一切。感謝發佈! – 2011-05-02 20:39:24

+0

我現在發佈它作爲答案。如果我有任何使用PowerShell進行服務器管理的經驗,但我沒有這方面的經驗,也沒有AD cmdlet /類型,所以我覺得使用評論更安全,以防萬一這是一個錯誤的想法: ) – Joey 2011-05-03 05:04:06

回答

0

你確定它確實沒有返回這些信息嗎?您是否嘗試將命令管道輸入Get-MemberFormat-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 

正常調用僅產生四個屬性: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;} 
+0

使用「select」就是我正在尋找的東西,所以我只能拉我想要的字段。謝謝! – 2011-05-03 15:23:33

0

請記住,選擇對象會剝離對象並生成新對象。

所以在這個例子:

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

$測試將只包含名稱的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 
+0

我將採取輸出並使用它來調和數據庫中的NT帳戶。儘管將它轉換爲數組有點困難。我可以將所有內容都轉換爲文本並進行解析,但我相信這是蠻力的做事方式。 – 2011-05-03 15:27:09

相關問題