Назад | Перейти на главную страницу

Как вывести список всех пользователей Active Directory и их членство в группах

Я бы хотел, чтобы одна строка сценария экспортировала в CSV всех пользователей в моем AD со всеми группами, членами которых они являются.

Я бы предпочел, чтобы это было сделано в PowerShell, но dsquery / dsget - действительно прекрасная альтернатива.

РЕДАКТИРОВАТЬ: я пытаюсь сделать что-то вроде этого:

$ user = "administrator" (GET-ADUSER -Identity $ user -Properties MemberOf | Select-Object MemberOf) .MemberOf

Но я хотел бы, чтобы цикл переменной $ user изменялся каждой строкой в ​​текстовом файле ссылки.

Это тот момент, когда я не знаю, как его зациклить.

Установите Команды квеста а затем запустите этот код:

Add-PSSnapin Quest.ActiveRoles.ADManagement
$memberships = @()

Get-QADGroup -SizeLimit 0 | Foreach-Object {
        $NameGroup = $_.Name
        Write-Host "Working with $NameGroup"
        $membership = Get-QADGroupMember $_.DN -Enabled -SizeLimit 0
        if ($membership -ne $null ) {
        $membership | Add-Member -type NoteProperty -name AuditGroupUserIsMemberOf -value $_.Name
        $memberships += $membership
        }
    }

$memberships | Select-Object AuditGroupUserIsMemberOf, NTAccountname | Export-Csv "GroupsWithUsers.csv"

Это даст вам 1 запись для каждого соединения группа-пользователь, поэтому ожидайте многократного появления пользователей и групп. Если у вас нет других полей, вы можете просто отредактировать Select-Object заявление. Использовать $memberships | gm чтобы увидеть все возможности для пользователей. Если вам нужно больше полей для групп, используйте Get-QADGroup | gm, тогда вам нужно будет добавить их, добавив новый NoteProperty.

Если вам не нужны дополнительные параметры, вот однострочный текст, который вы можете просто смешать в терминале:

Get-QADGroup -sizeLimit 0 | select @{name="Group";expression={$_.name}} -expand members | select Group,@{n='User';e={ (Get-QADObject $_).NTAccountName}} | Export-Csv "MyUsersAndGroups.csv"