AWS EC2 - 运行 使用 Windows Server 2012 启动实例的脚本

AWS EC2 - Run a Script on Instance Launch With Windows Server 2012

我想 运行 一个脚本来清除 Windows Server 2012 上的文件夹(即:C:/myfolder)。我想关于在 编辑组策略 下的 启动脚本 列表中添加项目,但这会在我的任何服务器重新启动时清除我的文件夹。我只希望在从现有 AMI 启动新实例时清除该文件夹。

实现此目标的最佳方法是什么?

实现此目的的最佳方法是 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 会在不同情况下要求客户端输入,当您执行用户数据时会导致脚本挂起,因为这是在启动期间由系统用户执行的。