首页 > 解决方案 > Powershell脚本获取用户的详细信息以及他们所属的组

问题描述

我正在尝试导出 AD 用户列表以及他们所属的组,导出的 csv 格式应该像

组 A User1_name
组 A User2_name
组 B User3_name
组 C User4_name
组 C User5_name

我努力了

$ErrorActionPreference = "SilentlyContinue"  
Get-Content R:\PHRBI-R\ADGroup_list.csv | Where{$_ -ne $null -and $_.trim() -ne ""} |   
    foreach{  
        $Group = $_   
        Write-Host "$Group"  
        Get-ADGroup -Identity $Group -Properties members |  
            Select-Object -ExpandProperty members |  
            Get-ADUser -Properties samaccountname, enabled |  
            Select samaccountname, name, Enabled  
    } 

但它没有提供我正在寻找的模板,并且新组不断添加,因此无法在任何文件中手动列出组并导出所需的详细信息。

标签: powershellactive-directory

解决方案


下面应该让你继续,我试图让它合乎逻辑。当然,这可以被清理和优化。

# Create csv
New-Item "Some\Path\To\CSV" -ItemType File -force

# Add header row
Add-Content -Path "Some\Path\To\CSV" -Value 'Group Name, NUID, Name, Enabled'

# Loop through each AD group
Get-ADGroup -Filter {Name -like 'ABC*'} | Foreach-Object {
    # Keep the group object so we can use it later
    $Group = $_
    
    # loop through each group  member
    $Group.members | Foreach-Object {
        $User = Get-ADUser -identity $_ -Properties samaccountname, name, enabled

        Add-Content -Path "Some\Path\To\CSV" -Value "$($Group.Name),$($User.samaccountname),$($User.name),$($User.Enabled)"
    }
}

请注意,如果存在嵌套组(即组中的组),则Get-AdUsercmdlet 将出错。


推荐阅读