【发布时间】: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