tl;dr
Invoke-Expression -Command (Invoke-RestMethod 'http://169.254.169.254/latest/user-data').powershell.ToString()
想定するUserDataの中身
<powershell> ...ここにPowerShellのコードを書く </powershell>
背景など
調べると、EC2Launchで次回起動時にUserDataを実行してくれる手順として
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
みたいなものが出てくる
でもこれは中身を読むとわかるがSysprepしてくれてAdministratorのパスワードも変わるしそこまでしなくてよかった。
メタデータを取得できるので、Linux系でよくある curl ... | bash
みたいなことをすればいいと思いつきこうなった。