【问题标题】:How to run a powershell script on Amazon EC2 instance at Startup?如何在启动时在 Amazon EC2 实例上运行 powershell 脚本?
【发布时间】:2017-11-29 23:54:05
【问题描述】:

我不得不认为这是一个已解决的问题,但我只是没有让它发挥作用。所以我就这个问题来找你 StackOverflow:

我有一台在亚马逊 ec2 中运行的 windows server 2016 机器。我在配置目录中有一个 machine.ps1 脚本。

我创建了一个盒子的图像。 (我试过检查 noreboot 并取消选中它) 当我创建图像的新实例时,我希望它在启动时运行 machine.ps1 以设置计算机名称,然后为该框设置路由和一些配置设置。目标是在不登录框的情况下执行此操作。

我已阅读并尝试过: Running Powershell scripts at Start up 并使用它来确保用户数据被传入: EC2 Powershell Launch Tools

我尝试设置一个在启动时运行 machine.ps1 的计划任务(它只是挂起) 我在启动任务中看到了 initializeInstance.ps1,甚至尝试将运行用户数据的行替换为运行我的脚本的行。什么都没有。

如果我登录该框并运行machine.ps1,它将重新启动计算机并设置计算机名称,然后我需要再次运行它来设置路由。这是手动工作的。我只需要找到一种自动执行此操作的方法。

我想从 powershell 启动这些实例,而不是使用启动配置和自动缩放。

【问题讨论】:

    标签: powershell amazon-ec2 amazon server-administration


    【解决方案1】:

    您可以使用用户数据 每当您部署新的服务器、工作站或虚拟机时,几乎总是需要在系统准备好使用之前对系统进行最终更改。通常,这通常使用可能在启动时手动触发的部署后脚本完成,或者它可能是配置管理器任务序列中的最后一步,或者如果您使用 Azure,则可以使用自定义脚本扩展。那么如何使用 Amazon Web Services (AWS) 中的 EC2 实例实现类似的功能呢?如果您已经创建了自己的 Amazon 系统映像 (AMI),则可以将脚本设置为从 Runonce 注册表项运行,但这可能是一种麻烦的方法,特别是如果您想更改脚本并且它已嵌入到映像中. AWS 提供了一种更加动态的方法,通过称为用户数据的功能注入脚本以在启动时运行。

    请参考以下链接:

    Poershell User data

    【讨论】:

    • 我添加了用户数据作为预映像框的一部分。当我对盒子进行成像时,用户数据消失了。如果我将用户数据传递给创建实例,则用户数据仍然不存在。想法?
    【解决方案2】:

    Windows 通常不会让 powershell 脚本调用另一个 powershell 脚本,除非它以管理员身份运行。这是一个奇怪的“安全”功能。但是完全可以加载 ps1 文件并使用其中的任何函数。

    UserData 脚本通常作为“系统”运行。你会认为这会通过集合。但它失败了......

    解决方案:将所有脚本改为 powershell 函数。

    在您的 machine.ps1 中 - 使用函数语法包装内容

    function MyDescriptiveName { <original script contents> }
    

    然后在 UserData - 使用这样的函数

    # To use a relative path
    Set-Location -Path <my location>
    # Load script file into process memory
    . <full-or-relpath>/machine.ps1
    # Call function
    MyDescriptiveName <params-if-applicable>
    

    如果函数需要调用其他函数(也称为脚本),您需要将这些脚本制作成函数,并将脚本文件也加载到 UserData 中的进程内存中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多