【问题标题】:AWS EC2 - Run a Script on Instance Launch With Windows Server 2012AWS EC2 - 使用 Windows Server 2012 在实例启动时运行脚本
【发布时间】:2015-10-12 19:12:36
【问题描述】:
我想运行一个脚本来清除 Windows Server 2012 上的一个文件夹(即:C:/myfolder)。我想在 启动脚本中添加一个项目编辑组策略下的strong>列表,但这会在我的任何服务器重新启动时清除我的文件夹。我只希望在从现有 AMI 启动新实例时清除该文件夹。
实现这一目标的最佳方法是什么?
【问题讨论】:
标签:
amazon-web-services
amazon-ec2
windows-server-2012
【解决方案1】:
实现这一点的最佳方法是EC2 User Data,它本质上是一个用户定义的脚本,在实例启动期间执行。在 Windows 上,您可以将用户数据作为 cmd 或 powershell 运行。当您请求启动新实例时会提供用户数据。
现有 AMI 需要配置为在启动时运行用户数据。这可以通过 EC2 配置服务进行管理,该服务预装在 Windows Server 2012 的社区 AMI 上,亚马逊提供。默认情况下,EC2 配置服务将在首次启动期间执行用户数据,然后将自身设置为不执行用户数据除非您手动更改它。
这是一个example from the AWS documentation,调用者通过powershell调用Rename-Computer:
要清空文件夹而不删除文件夹本身,您的脚本可能如下所示:
<powershell>
Remove-Item "C:\myfolder\*" -Force -Recurse
</powershell>
在运行用户数据时,了解您正在执行的 cmdlet 的作用非常重要,尤其是何时使用 -Force 标志来跳过交互式提示。某些 cmdlet 会根据情况要求客户端输入,并且当您执行用户数据时会导致脚本挂起,因为这是由系统用户在启动期间执行的。