使用PowerShell列出Active Directory中特定用户的所有组及其说明

时间:2014-02-03 02:36:37

标签: powershell active-directory

我正在尝试使用PowerShell获取特定用户组的列表和组的描述。

import-module activedirectory
$username = Read-Host 'Please enter Username!'
Get-ADPrincipalGroupMembership $username | select name, description

说明字段返回空白。

4 个答案:

答案 0 :(得分:4)

来自Get-ADPrincipalGroupMembership manual

  

Get-ADPrincipalGroupMembership cmdlet返回一组默认的ADGroup属性值。要检索其他ADGroup属性,请将此cmdlet通过pipline生成的ADGroups对象传递给Get-ADGroup。通过将-Properties参数传递给Get-ADGroup来指定组对象所需的其他属性。

所以,让我们做吧!

import-module activedirectory
$username = Read-Host 'Please enter Username!'
Get-ADPrincipalGroupMembership $username | Get-ADGroup -Properties * | select name, description

此外,在这种情况下,指定name,description而不是星号(*)应该足够了。如果这是性能问题,请将其替换。我将它留在星号,因为您可能会在以后改变您对所需属性的看法。

答案 1 :(得分:0)

对于用户

Get-ADUser -Filter {name -eq $username} -Properties * | select name,description

对于群组

Get-ADGroup -Filter {displayname -eq $groupname} -Properties * | select name,description

答案 2 :(得分:0)

Get-ADPrincipalGroupMembership应该可以工作,但是如果任何组的NAME包含'/'(就我理解MS AD documentation而言名称中的合法字符),则会失败。

这迫使一个繁重的解决方法:

$Groups = (Get-ADUser -identity $TemplateUserName -server $TemplateUserDomain -Properties MemberOf|select memberof).MemberOf|Get-ADGroup -Server :3268
foreach ($Group in $Groups)
{
    Write-Output $Group.Name
}

注意我使用域搜索来搜索用户的属性,然后在全局编录中搜索 (-server:3268)每组。否则,您最终将无法获得所有用户的组,或者如果任何组属于与用户不同的域,您将收到错误。

答案 3 :(得分:0)

这是一个简单但有效的脚本来获取AD组信息。

Get-ADGroup -filter * -Properties * | Select Name,GroupCategory,Description | Export-Csv D:\Test\SecurityGroups.csv

只需在“选择”区域中添加或删除要查看的属性即可。要查看可用属性列表,您可以执行以下操作:

Get-ADGroup -filter * -Properties * | Where-Object {$_.Name -eq 'DHCP Users' }

我希望有所帮助。