我们在AWS EC2实例上部署了一个Windows域基础架构。我们想要实现的是创建一个自定义的sysprepped映像,在启动新实例时,这些实例将自动加入域,然后根据AWS控制台中定义的区域,可用区和服务器名称重命名自己。
第一步已经通过使用添加到sysprep2008.xml的join domain组件实现,如下所示:
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Identification>
<UnsecureJoin>False</UnsecureJoin>
<Credentials>
<Domain>dc.connatix.com</Domain>
<Password>####</Password>
<Username>####</Username>
</Credentials>
<JoinDomain>####</JoinDomain>
<MachineObjectOU>OU=Servers,DC=dc,DC=####,DC=com</MachineObjectOU>
</Identification>
</component>
对于重命名操作,我们尝试了很多选项: 1.在sysprep之后执行一个powershell脚本,它将检索要从域控制器应用的脚本列表并逐个执行,但Get-AdDomainController在此步骤中不返回任何内容 2.通过将执行此脚本的组策略添加计划任务:这不起作用,因为我们无法通过组策略添加将在域管理员帐户下运行的任务 3.通过组策略添加启动脚本,但同样不在域管理员帐户下运行。
所有这些场景中使用的脚本如下所示,从经过身份验证的用户运行时,它运行良好。
$mypwd = ConvertTo-SecureString -String "####" -Force -AsPlainText
$mycreds = New-Object System.Management.Automation.PSCredential ("####", $mypwd)
Set-AWSCredentials -AccessKey #### -SecretKey #### -StoreAs default
$InstanceId = (Invoke-RestMethod 'http://169.254.169.254/latest/meta-data/instance-id').ToString()
$AvailabilityZone = (Invoke-RestMethod 'http://169.254.169.254/latest/meta-data/placement/availability-zone').ToString().ToLower()
$Region = $AvailabilityZone.Substring(0,$AvailabilityZone.Length-1)
$computer = Get-WmiObject Win32_ComputerSystem
$Tags = Get-EC2Tag -Filters @{Name='resource-id';Value=$InstanceId} -Region $Region
$InstanceName = $AvailabilityZone + '-' + ($Tags | Where-Object {$_.Key -eq 'Name'}).Value.ToLower()
$computerName = $computer.Name.ToLower();
If($InstanceName -ne $null) {
If ($computerName -ne $InstanceName) {
Rename-Computer -NewName $InstanceName -DomainCredential $mycreds -Restart
}
}
您认为我们如何才能做到这一点? 提前谢谢
答案 0 :(得分:0)
看看gMSA,虽然它在2008年的森林中得到了支持,但它在2012年和更早的时候变得更好了。 R2。您创建属于域管理员组的gMSA帐户,并将该gMSA帐户与域控制器相关联。
然后使用powershell脚本创建计划任务(仅使用gMSA帐户创建它)。任务运行时,域控制器会自动处理密码。