使用PowerShell列出特定用户在Active Directory中的所有组及其描述

6
我正在尝试使用PowerShell获取特定用户组的列表和组的描述信息。
import-module activedirectory
$username = Read-Host 'Please enter Username!'
Get-ADPrincipalGroupMembership $username | select name, description

描述字段返回空白。

相关问题:https://dev59.com/km445IYBdhLWcg3wBl2J https://dev59.com/9XM_5IYBdhLWcg3wQQpd 它们有帮助吗? - Palec
1
第一个链接有所帮助,但我无法弄清如何显示组的描述。 - user3264332
5个回答

7

来自Get-ADPrincipalGroupMembership手册

Get-ADPrincipalGroupMembership命令返回一组默认的ADGroup属性值。要检索其他ADGroup属性,请通过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而不是星号(*)即可。如果这会影响性能,请进行更改。我将保留星号,因为您以后可能会更改需要的属性。

3

这里有一个简单而有效的脚本,可获取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' }

0

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

这迫使我们使用一个繁琐的解决方法:

$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)中为每个组进行搜索。否则,您最终将无法获取所有用户的组,或者如果任何组属于与用户不同的域,则会出现错误。

0

获取用户所属组的列表:

(get-aduser 用户名 -properties *).memberof


-1

针对用户

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

针对群组

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

你能解释一下你的代码在做什么吗?这会帮助让你的回答更清晰明了。 - Juan Carlos Farah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接