Команда Powershell Add-Computer позволяет ввести компьютер в домен. Командлет так же позволяет ввести в домен компьютер под новым именем или в определенный OU.
Если мы выполним следующий командлет, то у нас появится запрос на ввод учетных данных так как для ввода в домен нужна будет доменная учетная запись:
Add-Computer -DomainName domain.local
Если у вас этого не получается, то проблема, скорее всего в DNS. Вы можете проверить доступность хоста пингом и настроить IP в Powershell.
После ввода выполняем перезагрузку:
Restart-Computer -Force
Есть два ключа, которые присутствуют как и в этом, так и во множестве других командлетов. Это:
- ComputerName - позволяет выполнять команды удаленно используя IP или имя
- Credential - позволяет выполнять команды передавая другие учетные данные
- LocalCredential - учетные данные локального администратора
Если мы запустили консоль Powershell под обычным пользователем, то нам понадобится две учетные записи - локального администратора и пользователя AD:
# Локальный администратор
$LocalCredential = Get-Credential
# Доменный администратор
$DomainCredential = Get-Credential
# Выполнение команды с правами администратора
Add-Computer -DomainName 'fixmypc.ru' -LocalCredential $LocalCredential -Credential $DomainCredential
С ключом ComputerName мы можем ввести в домен сразу несколько объектов. Один из минусов в том, что мы будем использовать проверку NTLM, что потребует дополнительных настроек и снизит безопасность.
# Учетные данные
$LocalCred = Get-Credential
$DomainCred = Get-Credential
# Адреса или имена одного, или множества хостов
$computers = '192.168.3.134','192.168.3.135','192.168.3.136'
Add-Computer -DomainName 'fixmypc.ru' -ComputerName $computers -LocalCredential $LocalCred -Force -Credential $DomainCred
У нас могут появиться ошибки:
- add-computer не удается установить подключение wmi к компьютеру
- Add-Computer : Cannot establish the WMI connection to the computer
Я решил эту проблему открытием порта 5985 и открытием доступа по WMI и следующим командлетом:
Enable-PSRemoting
Хоть Microsoft и пишет, что ключ ComputerName не использует службу PSRemoting, может потребоваться сделать следующее:
Set-Item wsman:\localhost\Client\TrustedHosts -value *
Если вы не понимаете смысл строки выше, то стоит почитать статью о том как выполнять удаленные команды в Powershell.
Ключ -Force позволяет не запрашивать подтверждение для каждого хоста если вы выполняете команду сразу для множества.
Мы можем изменить имя хоста сразу при вводе в домен. Для этого нужно добавить ключ:
Add-Computer -NewName 'Client1' -DomainName 'fixmypc.ru'
Ввод компьютера в определенную OU домена в Powershell
Для указания OU нужно понимать пути LDAP. На примере моего домена domain.local и OU Moscow путь будет выглядеть так:
$ldap_path = 'OU=Moscow,DC=domain,DC=local'
По умолчанию компьютер добавляется в контейнер (CN) Computers.
На примерах выше так мы добавим хост сразу в OU:
Add-Computer -DomainName 'domain.local' -OUPath $ldap_path -Restart
Ключ Restart отправит хост в перезагрузку.
Как удалить файлы в Powershell старше определенной даты
Добавление множества компьютеров в домен из CSV с помощью Powershell
Допустим у нас есть такой CSV файл с IP и новыми именами компьютеров:
Для импорта этого файла нужно определиться с символом, который разделяет значения. В моем случае делиметр ;
# Импортируем таблицу с IP и именами компьютеров
$csv_data = Import-CSV -Path 'C:\ad_comp.csv' -Delimiter ';'
# Указываем учетные данные
$local_cred = Get-Credential
$domain_cred = Get-Credential
# Подключаем компьютеры в домен
$csv_data | % {Add-Computer -ComputerName $_.IP -NewName $_.NewName -DomainName 'fixmypc.ru' -Credential $domain_cred -LocalCredential $local_cred -Force -Restart}
...
Подписывайтесь на наш Telegram канал
Теги: #powershell #ad