2014-08-29 74 views
0

我在Windows XP下使用ActiveRoles管理外殼,Powershell版本2用於從AD撤回組數據並將其導出到csv文件。除了獲取成員列表之外,一切都很順利該程序每次都在成員列System.String []下的excel單元格中編寫。如何讓它在整個列表中寫入,是否有可能?我實際上可能只有成員的名稱不需要整個連接路徑。是否有可能從組字段成員獲取唯一名稱?從AD導入成員組屬性到.csv

get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,member|Export-Csv -path Y:\csv\groups.csv 
+0

它與Select-Object -ExpandProperty而不是Select-Object -Property一起使用嗎? – Patrick 2014-08-29 11:06:21

+0

Select-Object:無法將'System.Object []'轉換爲參數'ExpandProperty'所需的類型'System.String'。不支持指定的方法。 – user61139 2014-08-29 11:09:56

+0

請提供所需輸出的示例。您是否希望它爲每個組輸出一個文件,或將所有組放入一個文件中? – TheMadTechnician 2014-08-29 15:24:04

回答

0

好吧,因爲馬特建議你希望在你的Select語句中有一個表達式。我會用這樣的:

@{l="Members";e={$_.Members -join ", "}} 

,當插入到你的一行是這樣的:

get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,@{l='Members';e={$_.member -join ", "}}|Export-Csv -path Y:\csv\groups.csv -NoTypeInfo 

我還添加-NoTypeInfo的出口跳過煩人的導線告訴你,這是一個PSCustomObject或一些這樣的,實際上只是得到你的數據(和標題)。

0

我沒有訪問任務的cmdlet,所以我將提供基於cmdlet的解決方案從activedirectory

Get-ADUser -Filter * -SearchBase "OU=Employees,DC=Domain,DC=Local" -Properties memberof | 
    Select-Object name,@{Name="Groups";Expression={$_.MemberOf | 
    ForEach-Object{(Get-ADGroup -Identity $_).Name + ";"}}} | 
    Export-Csv C:\temp\TEST.CSV -Append 

要逐行理解這一點:

  1. 應該是自我解釋。獲取定義的OU中的所有用戶。你需要改變這個以適應你的需求。
  2. 在您到達calculated property組之前,select語句顯示爲正常。
  3. 從前一行繼續的是,循環遍歷每個組,單個用戶爲memberof,並獲取該組的友好名稱(MemberOf返回DistinguishedName's)。在每個組的末尾添加一個";",以免干擾稍後將要製作的CSV。
  4. 追加到csv文件。

爲簡潔起見,我沒有包含您在Select-Object聲明中包含的所有額外屬性。顯然需要將這些添加回來,因爲需要適合。

既然你已經使用了任務的cmdlet,你可以只在你的SELECT語句改變member以下幾點:

@{Name="Groups";Expression={$_.member | ForEach-Object{"$_;"}}} 

我無法測試這是否會工作。這是基於假設成員包含一個簡單的名稱應該是distinguishedname

+0

不幸的是我不得不使用Quest AD shell,因爲我無法安裝Active Directory模塊。 – user61139 2014-08-29 13:42:07

+0

我做了一個有根據的猜測,你必須改變你的選擇語句才能使這個邏輯起作用。我只是無法自己測試語法來查看輸出是什麼樣的。 – Matt 2014-08-29 14:05:37