AWS上的域加入后计算机重命名

时间:2015-01-21 21:19:36

标签: powershell amazon-web-services amazon-ec2 active-directory windows-server-2012-r2

我们在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
    }
}

您认为我们如何才能做到这一点? 提前谢谢

1 个答案:

答案 0 :(得分:0)

看看gMSA,虽然它在2008年的森林中得到了支持,但它在2012年和更早的时候变得更好了。 R2。您创建属于域管理员组的gMSA帐户,并将该gMSA帐户与域控制器相关联。

然后使用powershell脚本创建计划任务(仅使用gMSA帐户创建它)。任务运行时,域控制器会自动处理密码。