Ну, ваш пост немного сбивает с толку, и нет никакой возможности проверить его, потому что у меня ничего подобного нет.
Тем не менее, запросы пользователей во всех подразделениях или на предприятиях - обычное дело.
Однако имя подразделения, как и любое другое имя объекта AD, должно быть уникальным.Таким образом, запрос одного и того же имени подразделения не является чем-то особенным в одном лесу / домене AD.Если вы имели в виду запрос каждого OU для одного и того же имени пользователя, тогда хорошо.
Пошагово объясните, как вы объясняете свой вариант использования, который выложили.
(хотя, возможно, вы захотите отредактировать свое сообщение, чтобы оно стало более понятным, в любом случае, хорошо для меня...)
Используя псевдокод, затем пытаясь отобразить это ... и без реального способа определить, что вы подразумеваете под несколькими вещами в вашем посте / образце.Итак, ниже приведен грубый первый пример того, как я подхожу к этому ... опять же, это не проверено, поэтому я оставляю вам эту домашнюю работу.
# query all users in multiple OUs
(Get-ADOrganizationalUnit -Filter *).DistinguishedName |
ForEach{
# Collect all members of the current OU
$AccountNames = Get-ADUser -SearchBase $PSItem -Filter *
# Process each member in the current OU collection
ForEach($AccountName in $AccountNames)
{
"Processing $($AccountName.SamAccoutnName)`n"
# Initialize properties needed for processing
$UserOrg = $AccountName.DistinguishedName.split(",")[1]
$MemberCheckOU = "OU=Admin-User-Accounts,OU=Administration,OU=ORG1,OU=$UserOrg,DC=domain,DC=net"
$NonCompliantOU = "OU=Groups,OU=ORG1,OU=Information Assurance,OU=$UserOrg,DC=domain,DC=net"
# Validate user file existence for the current user
If(-Not (Test-Path -LiteralPath "\\domain.net\SYSVOL\domain.net\IA\$($AccountName.SamAccoutnName).pdf)"))
{
# if no file Process the user groupmebership modification
"Processing $($AccountName.SamAccoutnName)"
# Notify that the file was not found and processing is required
Write-Warning -Message "$($($AccountName.SamAccoutnName).pdf) not found. Process group modify actions"
# If the current user is in the MemberCheckOU, add to the NonCompliantOU
If(Get-ADPrincipalGroupMembership -Identity $($AccountName.SamAccoutnName) | Where-Object -Property DistinguishedName -Match $MemberCheckOU )
{ Add-ADGroupMember -Identity $NonCompliantOU -Members $($AccountName.SamAccoutnName) }
Else
{
# Do something else
}
}
Else
{
# Notify that the file was found and no processing required
Write-Host "$($AccountName.pdf) found. No further actions taken" -ForegroundColor Green }
}
}