我正在尝试使用PowerShell获取特定用户组的列表和组的描述。
import-module activedirectory
$username = Read-Host 'Please enter Username!'
Get-ADPrincipalGroupMembership $username | select name, description
说明字段返回空白。
答案 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' }
我希望有所帮助。