Я бы хотел, чтобы одна строка сценария экспортировала в 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"