Как автоматически добавить виртуальную машину в домен?¶
Для добавления виртуальной машины в домен необходимо установить в гостевую операционную систему модуль cloud-init
. С более подробной информацией о модуле для Windows-based систем можно ознакомиться по ссылке.
Следует помнить, что помимо локально размещаемого скрипта, модуль cloud-init выполнит инструкции, заданные в параметре «Сценарий настройки» в подменю «Конфигурация» формы создания TRS проекта.
Подробнее о данном варианте настройки можно прочитать в соответствующем разделе инструкции Dashboard.
С помощью PowerShell¶
Важно
Необходимо использовать начальный тег <powershell>
и, соответственно, закрывающий тег </powershell>
в PowerShell скрипте.
Задайте домен для добавления:
$DomainToJoin = "accentos.loc"
Задайте описание спецификации OU, в которую следует заводить аккаунт сервера:
$OU = "OU=TestOU,DC=accentos,DC=loc"
Для передачи пользователя с правами для введения объектов в домен выполните команду:
$user = "Administrator"
Для передачи пароля выполните команду:
$password = "TestPass" $secure_password = ConvertTo-SecureString -String $password -AsPlainText -Force
Сформируйте токен доступа:
$credential = New-Object System.Management.Automation.PSCredential($user, $secure_password)
Добавьте в домен:
Add-Computer -DomainName $DomainToJoin -OUPath $OU -Credential $credential -Restart
Unattend Files не требует наличия клиента, использует средства SysPrep, но может быть включен в состав конфигурационного XML-файла для cloud-init.
Пример Unattend Files (небезопасное добавление):
-----------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Identification>
<UnsecureJoin>true</UnsecureJoin>
</Identification>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ProductKey>XXXX-XXXX-XXXX-XXXX-XXXX</ProductKey>
</component>
</settings>
</unattend>
-----------------------------------------------------------------------------------------
Пример Unattend Files (безопасное добавление):
-----------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Identification>
<UnsecureJoin>false</UnsecureJoin>
<Credentials>
<Domain>accentos.loc</Domain>
<Password>TestPass</Password>
<Username>Administrator</Username>
</Credentials>
</Identification>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>%MACHINENAME%</ComputerName>
</component>
</settings>
</unattend>
-----------------------------------------------------------------------------------------
С помощью xml и sysprep¶
Для добавления виртуальной машины в домен необходимо поместить 2 файла в нужные папки и запустить sysprep
.
Файл ответов 2.xml
нужно отредактировать и положить в папку c:\windows\system32\sysprep\
.
Отредактировать необходимо ту часть, в которой указаны домен и учётные данные:
<Identification>
<Credentials>
<Domain>demo.loc</Domain>
<Password>P@ssw0rd</Password>
<Username>administrator</Username>
</Credentials>
<JoinDomain>demo.loc</JoinDomain>
</Identification>
Где demo.loc
– ваш домен, P@ssw0rd
– ваш пароль, administrator
– ваш пользователь.
Файл setupcomplete.cmd
нужно положить в папку c:\windows\setup\scripts\
. Если целевая папка отсутствует, то её необходимо создать. Файл нужен, чтобы удалить файл ответов после того, как отработает sysprep
.
Далее открываем cmd
от имени администратора и выполняем команду:
SYSPREP /GENERALIZE /OOBE /SHUTDOWN /UNATTEND:C:\Windows\System32\sysprep\2.xml
Возможно для выполнения команды sysprep
необходимо будет перейти в папку.
В результате выполнения этой команды sysprep
запакует Windows и выключит её.
При следующем включении sysprep
будет разворачивать Windows согласно файлу ответов и соответственно вводить её в домен.
Пример файла 2.xml
:
<?xml version="1.0" encoding="UTF-8"?>
-<unattend xmlns="urn:schemas-microsoft-com:unattend">
-<settings pass="oobeSystem">
-<component language="neutral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-Shell-Setup">
-<OOBE>
<NetworkLocation>Work</NetworkLocation>
<HideEULAPage>true</HideEULAPage>
<ProtectYourPC>1</ProtectYourPC>
<SkipMachineOOBE>true</SkipMachineOOBE>
<SkipUserOOBE>true</SkipUserOOBE>
</OOBE>
<TimeZone>Russian Standard Time</TimeZone>
<RegisteredOwner>vdi</RegisteredOwner>
<RegisteredOrganization>vdi</RegisteredOrganization>
</component>
-<component language="neutral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-International-Core">
<InputLocale>ru-RU</InputLocale>
<SystemLocale>ru-RU</SystemLocale>
<UILanguage>ru-RU</UILanguage>
<UserLocale>ru-RU</UserLocale>
</component>
</settings>
-<settings pass="specialize">
-<component language="neutral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-UnattendedJoin">
-<Identification>
-<Credentials>
<Domain>demo.loc</Domain>
<Password>P@ssw0rd</Password>
<Username>administrator</Username>
</Credentials>
<JoinDomain>demo.loc</JoinDomain>
</Identification>
</component>
</settings>
-<settings pass="generalize">
-<component language="neutral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-PnpSysprep">
<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
</component>
</settings>
<cpi:offlineImage xmlns:cpi="urn:schemas-microsoft-com:cpi" cpi:source="catalog:e:/sources/install_windows 7 professional.clg"/>
</unattend>
Пример файла SetupComplete.cmd
:
del /Q /F c:\windows\system32\sysprep\2.xml
del /Q /F c:\windows\panther\2.xml
Важно
Для того, чтобы воспользоваться тремя последними методами добавления в домен используя cloudbase-init
, необходимо заключить команды в тег <script></script>
или в начале указать rem cmd
.
С помощью утилиты netdom¶
Для того, чтобы иметь возможность запустить утилиту в Windows 10, необходимо установить пакет утилит RSAT
. Для добавления в домен выполните команду:
netdom.exe join %computername% /domain:DomainName /UserD:DomainName\UserName /PasswordD:Password
С помощью WMI¶
Примечание
Рекомендуется не использовать кириллические имена с этой утилитой.
Для добавления машины с Windows с помощью WMI выполните команду:
wmic computersystem where name="%computername%" call joindomainorworkgroup fjoinoptions=3 name="homelab.local" username="homelab\labadmin" Password="secret"
Расширенный сценарий с вводом в конкретную операционную группу домена¶
Расширенный сценарий с вводом машины в конкретную операционную группу домена:
<script>
wmic computersystem where name="%computername%" call joindomainorworkgroup fjoinoptions=3 name="homelab.local" username="homelab\labadmin" Password="secret" AccountOU="OU=TS_TEST1;OU=TS_Servers;OU=TS_FARM;OU=Servers-VDI;DC=homelab;DC=local"
gpupdate /force
shutdown /r
</script>
С помощью командлета PowerShell Get-WmiObject¶
Примечание
Для использования файла PowerShell необходимо следующее:
Выполнить в командной строке:
powershell -Command Set-ExecutionPolicy RemoteSigned
Для добавления машины с помощью командлета PowerShell Get-WmiObject
выполните команду:
(Get-WMIObject -NameSpace "Root\Cimv2" -Class "Win32_ComputerSystem").JoinDomainOrWorkgroup("homelab.local","secret","homelab\labadmin",$null,3)
Также рекомендуется ознакомиться со следующей информацией: