2015-05-27 67 views
0

我有一個非常簡單的問題,但由於某種原因,我似乎無法擺脫困境。 我需要一行代碼,可以作爲用戶從客戶端運行,並列出來自AD的所有「memeber」組(僅適用於當前用戶)。類似於獲取用戶的會員

Get-ADGroupMember -identity "domain admins" -Recursive | foreach{ get-aduser $_} | select SamAccountName,objectclass,name 

我想要列出結果。

我需要一種方法來導入客戶端計算機上的AD模塊,或以其他方式聯繫DC並獲取用戶當前的「memeber of」組。

/尼克拉斯

+0

你的意思是說,如果我是一個用戶,你希望我用一行代碼來拉我的組? – Luke

回答

3

我找到了滿足我需求的最佳方式,但CB.'s answer也可以工作!

[ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof -replace '^CN=([^,]+).+$','$1' 

然後我可以在我的代碼

+0

我忘了ADSI,但如果你不想在每個桌面上安裝插件,這將是最好的解決方案。 – Luke

0

您可以使用DOS命令行:

net user /domain %username% 
+0

這可能會更好,因爲我不能指望_everyone_可以訪問廣告cmdlets – Matt

+0

我將它們放在我們的桌面/筆記本電腦映像中,以便它們始終處於腳本編寫狀態。 :) – EBGreen

+0

我有這個問題的一些問題。首先,這個命令可以在powershell中運行,但不能像當前所示。 OP確實要求提供PS解決方案。其次,需要分析輸出以獲取組的列表。第三,如果命令的返回長度超過22個字符,命令的返回將截斷組名。 – EBGreen

0

做最簡單的方法,這將是與

Get-ADPrincipalGroupMembership -identity "Username"

現在,這也意味着你將有加載活動目錄模塊,您可以在Technet上找到有關其使用的更多信息Get-ADPrincipalGroupMember

0

使用該輸出保持如果你只是想製作列表,請在命令提示符下一個電話,因爲我覺得這個效果很好,雖然它截斷組名稱:

net user %username% /DOMAIN 

如果你想以編程方式讓他們輕鬆地一些與這些數據,你要依靠Active Directory中的cmdlet

要確定你有這些在PowerShell中隨手可得,你需要運行下面的命令:

Get-Module –ListAvailable 

如果您沒有看到的ActiveDirectory在您需要先下載列表並自行安裝Windows Management Framework並導入模塊:

Import-Module ActiveDirectory 

一旦這樣做了,我相信這個命令應該做的伎倆:

(Get-ADUser userName –Properties MemberOf | Select-Object MemberOf).MemberOf 

希望能讓你開始。我相當確定有多種方法可以通過Powershell實現。看看Microsoft TechNet documentation,看看你是否能找到更適合你需求的東西。

就我個人而言,我只需要查詢AD組成員身份以進行診斷,並且始終依賴於Get-ADUser或命令行調用,具體取決於結果數據的目標受衆。