Чтобы решить эту задачу, проще всего использовать PowerShell с модулем Active Directory. Ниже приведен пошаговый план и готовый скрипт.
###

План действий
Вот логика того, что нам нужно сделать:
1. **Найти** все учетные записи компьютеров, которые являются членами группы `group1`.
2. **Добавить** найденные учетные записи в группу `group2`.
Вы можете использовать два разных подхода для изменения членства в группах. Разница между ними показана в таблице .
| Командлет | Фокус операции | Преимущество в нашем случае |
| :--- | :--- | :--- |
| **`Add-ADGroupMember`** | **На группе.** Вы указываете группу (`group2`) и говорите, кого в нее добавить. | Позволяет передать список компьютеров напрямую. |
| `Add-ADPrincipalGroupMembership` | **На объекте (компьютере).** Вы указываете компьютер и говорите, в какие группы его добавить. | Требует добавлять компьютеры по одному в цикле. |
Для нашей задачи **`Add-ADGroupMember`** подходит лучше, так как мы уже получили список всех нужных компьютеров.
###

PowerShell скрипт (готовое решение)
Перед запуском скрипта убедитесь, что:
- Консоль PowerShell запущена **от имени администратора**.
- На вашем компьютере установлен модуль `ActiveDirectory`. Обычно он доступен на машинах с инструментами удаленного администрирования сервера (RSAT).
- Замените `"group1"` и `"group2"` на реальные имена ваших групп.
```powershell
# Импортируем модуль для работы с Active Directory
Import-Module ActiveDirectory
# --- НАСТРОЙКИ (укажите здесь ваши имена групп) ---
$sourceGroupName = "group1" # Группа, членство в которой проверяем
$targetGroupName = "group2" # Группа, в которую нужно добавить компьютеры
# ---------------------------------------------------
Write-Host "Ищем компьютеры в группе '$sourceGroupName'..." -ForegroundColor Cyan
# 1. Получаем все компьютеры, которые состоят в исходной группе
# Командлет Get-ADGroupMember находит всех участников группы и фильтрует только объекты с типом "computer"
$computers = Get-ADGroupMember -Identity $sourceGroupName | Where-Object {$_.objectClass -eq "computer"}
# Проверяем, найдены ли компьютеры
if ($computers -eq $null -or $computers.Count -eq 0) {
Write-Host "В группе '$sourceGroupName' не найдено ни одной учетной записи компьютера." -ForegroundColor Yellow
} else {
Write-Host "Найдено компьютеров: $($computers.Count). Добавляем их в группу '$targetGroupName'..." -ForegroundColor Cyan
# 2. Добавляем найденные компьютеры в целевую группу
# Командлет Add-ADGroupMember добавляет участников. Обратите внимание на параметр -Members
Add-ADGroupMember -Identity $targetGroupName -Members $computers
# 3. Выводим результат на экран
Write-Host "Готово! Компьютеры из '$sourceGroupName' добавлены в '$targetGroupName'." -ForegroundColor Green
# Дополнительно: показываем список добавленных компьютеров
Write-Host "Список добавленных компьютеров:" -ForegroundColor Cyan
$computers.Name | ForEach-Object { Write-Host "- $_" }
}
```
###

Объяснение ключевых команд
1. **`Get-ADGroupMember -Identity $sourceGroupName`**: Эта команда получает список всех участников (пользователей, компьютеры, другие группы) указанной группы .
2. **`Where-Object {$_.objectClass -eq "computer"}`**: Это фильтр. Он берет полученный список и оставляет только те объекты, у которых свойство `objectClass` равно `computer`, то есть только компьютеры . Это важно, если в `group1` могут быть и другие объекты.
3. **`Add-ADGroupMember -Identity $targetGroupName -Members $computers`**: Это основная команда. Она добавляет всех компьютеров из переменной `$computers` в группу `$targetGroupName` .
###

Важный совет
- **Права доступа:** Для выполнения этих команд ваша учетная запись должна иметь права на изменение членства в обеих группах в Active Directory.
Таким образом, вы одним скриптом найдете все нужные компьютеры и добавите их в целевую группу.