param ( [string]$DomainName = "contoso.com", [string]$FunctionalLevel = "WinThreshold", [string]$SafeModePassword = "P4ssw0rd1234!" ) $scriptName = $MyInvocation.MyCommand.Name $logFile = "C:\Logs\${scriptName}_log.txt" Start-Transcript -Path $logFile -Append $NetBiosName = $DomainName.Split(".")[0].ToUpper() Write-Host "[INFO] Setting Administrator password" $computerName = $env:COMPUTERNAME $adminPassword = "packer" $adminUser = [ADSI] "WinNT://$computerName/Administrator,User" $adminUser.SetPassword($adminPassword) Write-Host "[INFO] Installing Ad-Domain-Services Windows feature + subfeatures" Install-WindowsFeature AD-Domain-Services -IncludeAllSubFeature -IncludeManagementTools Write-Host "[INFO] Importing ADDSDeployment module" Import-Module ADDSDeployment try { Write-Host "[INFO] Installing ADDSForest" Install-ADDSForest ` -InstallDns ` -CreateDnsDelegation:$false ` -ForestMode $FunctionalLevel ` -DomainMode $FunctionalLevel ` -DomainName $DomainName ` -DomainNetbiosName $NetBiosName ` -DatabasePath "C:\Windows\NTDS" ` -LogPath "C:\Windows\NTDS" ` -SysvolPath "C:\Windows\SYSVOL" ` -NoRebootOnCompletion ` -Force ` -SafeModeAdministratorPassword (ConvertTo-SecureString -AsPlainText -Force "$SafeModePassword") Write-Host "[INFO] Created Active Directory domain for $DomainName" } catch { Write-Host "[ERR] Failed to create Active Directory domain for $DomainName" Write-Host $_.Exception.Message } Stop-Transcript