通常のRDPポート(3389)ではなく、22番ポートなど別のポートでRDP接続したい場合のUserDataです。
レジストリの変更でポートが変えられる(https://support.microsoft.com/en-us/kb/306759) ようなので、試しに実行してみたところうまく動作しました。同時にWindows Firewallの設定も必要になるため、TCP22番ポートを開ける設定を一緒に行います。
EC2起動時の詳細設定でUserDataの部分に張り付けて、起動させます。1度目の起動は3389ポートになりますので、起動後に再起動すると22番ポートで接続できるようになります(セキュリティグループの設定も3389から22に変更してください)。
<powershell>
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -name "PortNumber" -value "22"
if (-not(Get-NetFirewallRule | where Name -eq Open-Port-22))
{
New-NetFirewallRule `
-Name Open-Port-22 `
-DisplayName Open-Port-22 `
-Description "Open-Port-22" `
-Enabled True `
-Profile Any `
-Direction Inbound `
-Action Allow `
-EdgeTraversalPolicy Block `
-LooseSourceMapping $False `
-LocalOnlyMapping $False `
-OverrideBlockRules $False `
-Program Any `
-LocalAddress Any `
-RemoteAddress Any `
-Protocol TCP `
-LocalPort 22 `
-RemotePort Any `
-LocalUser Any `
-RemoteUser Any
}
else
{
Write-Verbose "Open-Port-22 exits."
}
</powershell>
動作確認はWindows 2012 R2のAMIで行っています。またスクリプトの書き方はこちら(http://tech.guitarrapc.com/entry/2013/07/08/210724) を参考にさせていただきました。ありがとうございます。