无法在自定义 CloudFormation AMI (WinServer 2012) 中运行远程 PowerShell 命令

S_L*_*uis 5 powershell amazon-ec2 amazon-web-services aws-cloudformation

我将要描述的问题在 Amazon 的库存 Windows Server 2012 AMI 上运行正常。我遇到了自定义 AMI 的问题。

我通过从 EC2 机器创建映像为 Windows Server 2012 创建了自定义 AMI。

在创建自定义 AMI 之前,我使用 Ec2ConfigServiceSetting.exe 来确保:

  • 该实例根据其 IP 接收一个新的机器名称。
  • 用户的密码在启动时更改。
  • 该实例是使用我在 UserData 中放置的脚本提供的。

在为自定义 AMI 创建映像之前,我还使用 Ec2ConfigServiceSetting 中的 Sysprep 关闭了实例

但是,当我运行远程 PowerShell 命令(来自 C# 代码,如果重要的话)时,它不起作用。在 C#-land 中,命令执行正常,但机器中没有任何反应。

假设我的远程 PS 命令在远程机器 ( agent.exe) 中启动了一个程序。我的脚本看起来有点像:

Set-Location C:\path\in\disk
$env:Path = "C:\some\thing;" + $env:Path
C:\path\to\agent.exe --daemon
Run Code Online (Sandbox Code Playgroud)

一旦我登录到 Ec2 实例,agent.exe --daemon没有运行。但是,如果我第一次登录到该实例,然后运行远程PowerShell命令,agent.exe --daemon DOES运行。

这与 Amazon 的库存 AMI 完美配合,所以我只能假设我缺少一些配置才能使其正常工作(而且,如果我第一次使用 RDesktop 登录它为什么会起作用?)

过去我们发现了一些关于没有用户配置文件的 SSL 初始化的问题,因此在我们的配置脚本 ( UserData) 中,我们做了一些有人可能认为是恶作剧的事情:

net user Administrator hardcoded-password
net user ec2-user hardcoded-password /add

$pwd = (ConvertTo-SecureString 'hardcoded-password' -AsPlainText -Force)
$cred = New-Object System.Management.Automation.PSCredential('Administrator', $pwd)
Start-Process cmd -LoadUserProfile -Credential $cred
Run Code Online (Sandbox Code Playgroud)