Как ввести в домен через Powershell Add-Computer


28 августа 2019


Вводим в домен с Powershell Add-Computer

Команда 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

Ввод в домен Powershell Add-Computer

У нас могут появиться ошибки:

  • 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 отправит хост в перезагрузку.

 

Добавление множества компьютеров в домен из CSV с помощью Powershell

Допустим у нас есть такой CSV файл с IP и новыми именами компьютеров:

Добавление компьютеров в домен из CSV

Для импорта этого файла нужно определиться с символом, который разделяет значения. В моем случае делиметр ;

# Импортируем таблицу с 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}

 

...

Теги: #powershell #ad


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.