powershell 列出所有具有组成员资格的活动域用户

powershell 列出所有具有组成员资格的活动域用户

如何获取具有组成员身份且每行一个用户的所有活动域用户的列表?

我努力了:

Import-Module Activedirectory
Get-ADUser -Filter 'enabled -eq $true' -Properties SamAccountname,DisplayName,memberof | % {
New-Object PSObject -Property @{
UserName = $_.DisplayName
Groups = ($_.memberof | Get-ADGroup | Select -ExpandProperty Name) -join 
","}
} | Select SamAccountname,UserName,Groups 

但 SamAccountname 是空的。

答案1

您不需要,SamAccountname因为 powershell 会在您使用 New- 创建的自定义对象中搜索此属性Object。如果要SamAccountname在此对象中检索,则必须进行修改以具有:

Get-ADUser -Filter 'enabled -eq $true' -Properties SamAccountname,DisplayName,memberof | % {
New-Object PSObject -Property @{
UserName = $_.DisplayName
oSamAccountname= $_.SamAccountname
Groups = ($_.memberof | Get-ADGroup | Select -ExpandProperty Name) -join 
","}
} | Select oSamAccountname,UserName,Groups 

答案2

这是相当简单的代码,但它给了我一个用户及其组成员的列表。我必须对结果进行排序才能得到我想要的结果,但这确实会产生 CSV 文件格式,这使得在 Excel 中操作更容易。

$ADGroupList = Get-ADGroup -Filter * | Select Name -ExpandProperty Name | Sort Name
ForEach($Group in $ADGroupList)
{
  $members=Get-ADGroupMember -Identity $Group | Select Name, SAMAccountName | Sort
  ForEach($member in $members)
  {
  Write-Host ($member.Name + "," + $member.SAMAccountName  + "," + $Group.name)
  }
}

相关内容