Created
March 4, 2025 09:04
-
-
Save themaximax/0ac67cd74910da002c71e1e3ef0333e9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Импортируем модуль Active Directory (если не импортирован автоматически) | |
| Import-Module ActiveDirectory | |
| # Указываем путь к контейнеру с пользователями | |
| $OU = "OU=Users,OU=Zavod,OU=KUR,DC=firma,DC=ru" | |
| # Таблица для сопоставления старых и новых групп | |
| $groupMapping = @{ | |
| "WG ISA ALL MSK" = "WG ISA ALL BLG" | |
| "WG ISA HR MSK" = "WG ISA HR BLG" | |
| "WG ISA Shopping MSK" = "WG ISA EXT BLG" | |
| "WG ISA STD MSK" = "WG ISA STD BLG" | |
| "WG ISA Social MSK" = "WG ISA Messendgers BLG" | |
| } | |
| # Получаем всех пользователей из OU | |
| $users = Get-ADUser -Filter * -SearchBase $OU -Properties MemberOf | |
| # Обрабатываем каждого пользователя | |
| foreach ($user in $users) { | |
| Write-Host "Обрабатываем пользователя: $($user.SamAccountName)" | |
| # Получаем список групп, в которых состоит пользователь (второй способ быстрее) | |
| # $userGroups = Get-ADPrincipalGroupMembership -Identity $user.SamAccountName | |
| $userGroups = $user.MemberOf | ForEach-Object { $(Get-ADGroup $_).Name } | |
| # Проверяем каждую старую группу из таблицы | |
| foreach ($oldGroup in $groupMapping.Keys) { | |
| if ($userGroups -contains $oldGroup) { | |
| $newGroup = $groupMapping[$oldGroup] | |
| try { | |
| Write-Host "+ '$newGroup' " -NoNewline | |
| if ($userGroups -notcontains $newGroup) { | |
| Add-ADGroupMember -Identity $newGroup -Members $user.SamAccountName -ErrorAction Stop | |
| Write-Host "ОК" -ForegroundColor Green | |
| } else { | |
| Write-Host "Уже состоит" -ForegroundColor Yellow | |
| } | |
| Write-Host "- '$oldGroup' " -NoNewline | |
| Remove-ADGroupMember -Identity $oldGroup -Members $user.SamAccountName -Confirm:$false -ErrorAction Stop | |
| Write-Host "ОК" -ForegroundColor Green | |
| } | |
| catch { | |
| Write-Host "Ошибка при обработке пользователя: $_" -ForegroundColor Red | |
| } | |
| } | |
| } | |
| } | |
| Write-Host "Обработка завершена." -ForegroundColor Green |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment