EC2 Cloudformation - 使用 powershell 从 GitHub 检索 powershell scrips 的用户数据

EC2 Cloudformation - 使用 powershell 从 GitHub 检索 powershell scrips 的用户数据

我有一个 AWS cloudforamtion - 它构建了我的整个 VPC 及其子网等 - 在此 CF 中构建了一个 Windows 2012 服务器 - 我们希望在用户数据下引导此服务器,以便它成为域控制器。我们所有的 ps1 脚本都托管在 github 上。在用户数据下,我输入了以下内容

"<powershell>\n",
      "Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force\n",
      "Rename-Computer AWSAD10 -restart\n",
      "Start-Sleep -s 100\n",
      "$url = \"https://github.com/username/gittest/blob/testinggit/NewAD.ps1\" \n",
      "(New-Object System.Net.WebClient).DownloadFile($url, 'C:\\Windows\\Temp\\NewAD.ps1')\n",

重命名计算机的命令可以正常工作 - 这里不起作用的是托管在 git 上的 NewAD.PS1 脚本 - 当我在本地服务器上运行此脚本时,一切正常,因此它通过在本地运行升级到 AD,但是从 git 拉取不起作用 - 我也尝试过:

$trueInvoke-WebRequest -Uri "$trueInvoke-WebRequest -Uri "https://raw.github.com/cloudbase/unattended-setup-scripts/master/UpdateAndSysprep.ps1" \n",

有什么想法吗?我有一周的时间尝试弄清楚如何做到这一点?但如何实现这一点却没有太多信息

答案1

下面是我如何让它工作的一个例子

"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
          "<powershell>\n",
          "Set-ExecutionPolicy RemoteSigned -Force\n",
          "Set-Content -Path C:\\OnPremDG.ps1 -Value \"(New-Object System.Net.WebClient).DownloadFile( 'https://download.microsoft.com/download/D/A/1/DA1FDDB8-6DA8-4F50-B4D0-18019591E182/GatewayInstall.exe', 'c:\\GatewayInstall.exe' )`r`n& c:\\GatewayInstall.exe /Q\" -force\n"
            "</powershell>"]]}}

左边是运行该死的脚本的命令:)))(我让它运行,但在一次测试中丢失了命令)

检查脚本的日志:C:\ProgramData\Amazon\EC2-Windows\Launch\Log 实际脚本位于 C:\Windows\Temp\UserScript.ps1 您将看到运行时 powershell 的默认目录是 C:\Windows\Temp ...AWS 应该使用与此相关的信息更新其文档。

相关内容