Сценарий установки ADDSForrest не перезагрузится после завершения

Прежде чем пытаться ответить на заголовок

Я использую аргументы -force и -confirm:$false.

Мне было поручено написать сценарий, который полностью автоматизирует продвижение сервера в новый лес активных каталогов, однако моя программа зависает, как только она фактически продвигает сервер из Install-ADDSForest команда. Он завершает операцию контроллера домена, но не может вернуть выполнение обратно сценарию и не может автоматически перезагрузить компьютер. Я пробовал как использовать автоматический перезапуск из команды, так и подавить автоматический перезапуск и выполнить ручной перезапуск, но без кубиков: управление никогда не возвращается из команды.

Когда я запускаю его как задание, единственный способ заставить его продолжить вручную - это закрыть окно, к которому относится задача, открыть другое окно powershell и возобновить задание. Компьютер сразу перезагружается как надо. Я мог бы написать этот процесс, закрывая исходное окно и продолжая откуда-то еще, но это похоже на ужасный хак. Я единственный человек, имеющий опыт разработки программного обеспечения, все остальные являются ИТ-специалистами, поэтому я не уверен, что смогу объяснить, почему мне нужно делать это в документации, и это усложнит обслуживание кода.

Я использую PowerShell рабочий процесс. Проблема не существует вне рабочего процесса powershell, но мне нужен рабочий процесс для запуска сценария с контрольными точками, чтобы я мог продолжить после перезапуска. Я мог бы сделать это с несколькими файлами и переменными для отслеживания прогресса, но это сделало бы мой код почти нерасширяемым.

Удалите записи из журнала ниже (включая момент, когда я сыт по горло и использую мой обходной путь, чтобы перезагрузиться после того, как оставил мою программу на ночь)

07/05/2017 16:31:22 [INFO] DsRolepSetDCLocatorPostPromoState: got 0 creating the DSROLEP_DCLOCATOR_PREREBOOT_HINT key
07/05/2017 16:31:22 [INFO] The attempted domain controller operation has completed
07/05/2017 16:31:22 [INFO] Updating service status to 4
07/05/2017 16:31:22 [INFO] DsRolepSetOperationDone returned 0
07/05/2017 19:30:35 [INFO] Updating service status to 3
07/05/2017 19:30:35 [INFO] DS Role Server Service shutting down
07/05/2017 16:31:22 [INFO] DsRolepSetDCLocatorPostPromoState: got 0 creating the DSROLEP_DCLOCATOR_PREREBOOT_HINT key
07/05/2017 16:31:22 [INFO] The attempted domain controller operation has completed
07/05/2017 16:31:22 [INFO] Updating service status to 4
07/05/2017 16:31:22 [INFO] DsRolepSetOperationDone returned 0
07/05/2017 19:30:35 [INFO] Updating service status to 3
07/05/2017 19:30:35 [INFO] DS Role Server Service shutting down

Пример минимального кода, документирующий мои проблемы ниже:

#requires -runasadministrator
param(
[parameter(mandatory=$true)]
[string]
$rootDomainName,
[parameter(mandatory=$true)]
[string]
$netBiosName
)



workflow New-adsetup{
param(
[parameter(mandatory=$true)]
[string]
$rootDomainName,
[parameter(mandatory=$true)]
[string]
$netBiosName
)


function promoteandinstall{ 
param(
[parameter(mandatory=$true)]
[string]
$rootDomainName,
[parameter(mandatory=$true)]
[string]
$netBiosName
)

echo "!!!begin promote to AD!!!"

echo "!installing windows feature!"

Install-WindowsFeature -name AD-Domain-Services  

echo "!feature installed!"



Import-Module ADDSDeployment
Install-ADDSForest `
-Force:$true `
-confirm:$false `
-skipPrechecks:$true `
-DomainMode "Win2012R2" `
-DomainName $rootdomainname `
-DomainNetbiosName $netbiosname `
-ForestMode "Win2012R2" `
-InstallDns:$false `
-NoRebootOnCompletion:$true <#$true#> `
-SafeModeAdministratorPassword (convertto-securestring "P4ssw0rd" -asplaintext -force) 

restart-computer -force
}

promoteandinstall -rootDomainName $rootDomainName  -netBiosName $netBiosName

md D:\ThisCommandRunAfterReboot
 }


 $AtStartup = New-JobTrigger -AtStartup
 Register-ScheduledJob -Name ADSetup -Trigger $AtStartup -ScriptBlock `
  {Import-Module PSWorkflow;
   Get-Job ADSetup -State Suspended | Resume-Job}


 New-ADSetup -rootDomainName $rootDomainName -PSPersist:$true `
 -netBiosName $netBiosName  -AsJob -JobName ADSetup


 Unregister-ScheduledJob -Name ADSetup

0 ответов

Другие вопросы по тегам