Перезагрузка во время продвижения контроллера домена? - PullRequest
0 голосов
/ 19 февраля 2019

Я разработал функцию для продвижения контроллеров домена в существующем лесу, а затем перемещает контроллер домена из стандартного подразделения контроллера домена в подчиненное подразделение.Однако эта функция работает иногда, когда запускаемая функция перезагружается сервером, который перезагружается в течение ~ 10 минут после запуска функции, в других случаях она ожидает ~ 85 минут перед перезагрузкой.Функция принимает CSV для последовательного продвижения нескольких DC.

Проблема заключается в том, что функция ждет ~ 85 минут, прежде чем ее перезагрузка задерживает продвижение следующего DC в CSV.Все контроллеры домена находятся в одном центре обработки данных в одной сети.Начальная репликация AD продолжается после перезагрузки, поэтому она не ожидает завершения начальной репликации до перезагрузки.

Чтобы обеспечить постоянное продвижение DC в поместье моих клиентов, мне нужно понять, чтоПроцесс перезагрузки:

Мой вопрос: что диктует перезагрузка сервера во время продвижения по постоянному току?

Моя функция выглядит следующим образом:

function New-PSATDomainController {
[CmdletBinding()]
param (
    [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)][string] $VMName,
    [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)][string] $Domain,
    [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)][string] $ADSite,
    [Parameter(Mandatory = $true)][string] $SafeModeAdministratorPassword,
    [Parameter(Mandatory = $true)][System.Management.Automation.PSCredential] $GuestCredential,
    [Parameter(Mandatory = $true)][System.Management.Automation.PSCredential] $Credential
)

begin {
}

process {
    # Set required variables
    $FQDN = ("$vmname"+"."+"$Domain")
    $DefaultDomainControllerOUPath = (Get-PSATDefaultDomainControllerOUPath -Domain "$Domain")

    # Install AD Domain Services
    Write-verbose "Installing the following windows features - AD-Domain-Services,RSAT-AD-AdminCenter,RSAT-ADDS-Tools" -Verbose
    $InstallDomainServices = "Add-WindowsFeature AD-Domain-Services,RSAT-AD-AdminCenter,RSAT-ADDS-Tools -Restart"
    Invoke-VMScript `
        -VM "$VMName" `
        -ScriptText $InstallDomainServices `
        -GuestCredential $GuestCredential `
        -Confirm:$false

    start-sleep -Seconds 60
    Wait-Tools -VM "$VMName" -TimeoutSeconds 300
    Start-Sleep -Seconds 20

    # Promote Virtual Machine to Domain Controller.
    Write-Verbose "Promoting `"$VMName`" to be a Domain Controller of the `"$Domain`" Domain." -Verbose

    $PromoteToDomainControllerScript = "
    `$CredentialPassword = ConvertTo-SecureString -String '$($Credential.GetNetworkCredential().Password)' -AsPlainText -Force
    `$Credential = New-Object System.Management.Automation.PSCredential (`"$($Credential.Username)`", `$CredentialPassword)
    `$SafeModeAdministratorPassword = ConvertTo-SecureString -String '$SafeModeAdministratorPassword' -AsPlainText -Force
    New-Item -Path e:\NTDS -ItemType directory
    New-Item -Path e:\SYSVOL -ItemType directory
    Import-Module ADDSDeployment
    Install-ADDSDomainController ``
    -NoGlobalCatalog:`$false ``
    -CriticalReplicationOnly:`$false ``
    -DatabasePath 'e:\NTDS' ``
    -DnsDelegationCredential `$Credential ``
    -DomainName $Domain ``
    -InstallDns:`$true ``
    -LogPath 'e:\NTDS' ``
    -NoRebootOnCompletion:`$false ``
    -SiteName $ADSite ``
    -SysvolPath 'e:\SYSVOL' ``
    -Force:`$true ``
    -SafeModeAdministratorPassword `$SafeModeAdministratorPassword ``
    -ADPrepCredential `$Credential ``
    -Credential `$Credential"

    Invoke-VMScript `
        -ScriptText $PromoteToDomainControllerScript `
        -VM "$VMName" `
        -GuestCredential $GuestCredential `
        -Confirm:$false `
        -ScriptType:Powershell `
        -ErrorAction SilentlyContinue

    # Wait for the VM to finalise it's Domain Controller promotion and reboot
    Write-Verbose "Waiting up to 60 minutes for `"$FQDN`" to finalise it's Domain Controller promotion and reboot" -Verbose
    $StartDate = Get-Date
    $DCServices =  "adws","dns","kdc","netlogon"
    do {
        $DCServicesStatus = (invoke-command -ComputerName "$FQDN" -Credential $Credential -ScriptBlock {get-service -Name $Using:DCServices} -ErrorAction SilentlyContinue)
    } while ($DCServicesStatus.status -ne "Running" -and $startDate.AddMinutes(120) -gt (Get-Date))

    Write-Verbose "$VMName has rebooted" -Verbose
    Wait-Tools -VM "$VMName"
    Start-Sleep -Seconds 60

    # Move New Domain Controller into Correct AD OU.
    Write-verbose "Moving new Domain Controller `"$VMName`" into correct AD OU, `"$DefaultDomainControllerOUPath`"." -Verbose
    Invoke-Command `
        -ComputerName $Domain `
        -ScriptBlock {get-adcomputer "$Using:VMName" | Move-ADObject -TargetPath "$Using:DefaultDomainControllerOUPath"} `
        -Credential $Credential

    Write-Verbose "Completed promoting `"$VMName`" to be a Domain Controller of the `"$Domain`" Domain." -Verbose     
}

end {
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...