【问题标题】:Computer rename after domain join on AWS在 AWS 上加入域后重命名计算机
【发布时间】:2015-03-20 13:14:06
【问题描述】:

我们在 AWS EC2 实例上部署了一个 Windows 域基础设施。我们想要实现的是创建一个自定义的 sysprep 映像,当启动新实例时,这些实例将自动加入域,然后根据 AWS 控制台中定义的区域、可用区和服务器名称重命名。

使用添加到 sysprep2008.xml 的加入域组件已经实现了第一步,如下所示:

<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
    }
}

您认为我们可以如何做到这一点? 提前谢谢你

【问题讨论】:

  • 不确定您是否已经这样做了,但在 EC2 中the computer name is (conditionally) reset on each boot by the EC2 Config Service 可能还有一个额外的“陷阱”。您可以从服务的对话框中禁用它。
  • 您好 Anthony,我们已经在 ec2 上重置了自动计算机名称,但我希望计算机名称是控制台中设置的 EC2 标记。我们想要这个是因为我们想做如下的事情:如果计算机名称是 WEB-PROD-X 来自动安装 IIS,部署我们的 Web 应用程序并添加到负载均衡器下。如果是 SERV-PROD-X 来自动安装我们的自定义 windows 服务等等。保持我们的命名约定非常重要
  • 您能否说明您发布的脚本收到了什么错误以及何时收到?或者你实际上最终得到了这个工作?我即将开始一项类似的工作,但在我开始沿着相同的路径进行故障排除之前,如果你确实做到了,我将不胜感激后续行动。谢谢。
  • 嗨 ss2k。我放弃了这项工作,因为它真的很难模拟非常耗时。如果我要重新开始工作并使其正常工作,我会通知您。

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


【解决方案1】:

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

然后使用 powershell 脚本创建计划任务(使用 gMSA 帐户创建它的唯一方法)。当任务运行时,密码由域控制器自动处理。

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2019-07-05
    • 1970-01-01
    • 2011-09-07
    • 2012-05-10
    • 2021-12-31
    • 2017-06-12
    • 2015-03-17
    • 1970-01-01
    相关资源
    最近更新 更多