I logged into an existing VM, did sysprep, selected generalize + oobe, shutdown, waited for deallocation, then captured from the portal.
I created an image from the generalized disk in the Azure portal, but when it tries to start, it gets stuck in the Create state. Looking at the boot diagnostics, it appears it's asking for language, keyboard layout, etc. It is of course not possible to RDP into the machine in this state. Is there something I can add to the deployment template / automation script to get past this?