Want to add that i could get windows slaves working using JNLP approach for my use case by modifying plugin.
Below is the approach i took.
1) Prepared custom windows AMI with java runtime.
2) From Jenkins, during windows slave creation passing boot script in "EC2 User Data".
Script does following
a) Downloads slave.jar from Jenkins master
b) Executes slave.jar using below command
java -jar slave.jar -secret <slaveSecret> -jnlpUrl <jenkinsServerURL>/jenkins/computer/<VMName>/slave-agent.jnlp
slave secret is generated using jenkins API "JnlpSlaveAgentProtocol.SLAVE_SECRET.mac(vmName);"
I could able to get it working with jenkins master on both Linux and Windows in AWS cloud.
I will submit a PR for this however would like to know how do you want to control between winrm and JNLP approach for windows slaves
Also looking forward for some guidance on how to get winrm working