У меня нет большого опыта в Active Directory или Powershell, мне нужно вытащить всех пользователей и там детали, принадлежащие более чем 1000 группам безопасности.
Я пробовал несколько разных сценариев PS, доступных в Интернете, но из-за большого количества данных сценарий занимает очень много времени (я остановил сценарий после того, как он продолжал работать в течение 3 дней)
Я также попытался разбить список групп и запустить 100 групп одновременно с использованием SSIS, но безрезультатно.
Я использую следующий 1-й скрипт для извлечения членов групп и 2-й скрипт для извлечения остальной информации о пользователе.
P.S. группы и пользователи представляют собой смесь из нескольких поддоменов.
Скрипт 1:
$groups = Get-Content c:\temp\Groups.txt
foreach($Group in $Groups) {
Get-ADGroupMember -Id $Group | select @{Expression= {$Group};Label="Group Name"},* | Export-CSV c:\temp\GroupsInfo.CSV - NoTypeInformation
}
Скрипт 2:
$objForest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$DomainList = @($objForest.Domains | Select-Object Name)
$Domains = $DomainList | foreach {$_.Name}
$Users = Import-CSV c:\users\public\users.csv
#Act on each domain
foreach($Domain in ($Domains))
{
Write-Host "Checking $Domain" -fore blue
Foreach($mail in ($Users.mail))
{
Get-ADUser -filter {mail -eq $mail} -Server $domain -properties mail | select mail,employeeID,title,department,name
Export-CSV c:\temp\MemberDetails.CSV -NoTypeInformation
}
}