code: func NewExecuteCommandRequest(uri, shellId, command string, arguments []string, params *Parameters) *soap.SoapMessage {
  	if params == nil {
  		params = DefaultParameters
  	}
  	message := soap.NewMessage()
  	defaultHeaders(message, uri, params).
  		Action("http://schemas.microsoft.com/wbem/wsman/1/windows/shell/Command").
  		ResourceURI("http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd").
  		ShellId(shellId).
  		AddOption(soap.NewHeaderOption("WINRS_CONSOLEMODE_STDIN", "TRUE")).
  		AddOption(soap.NewHeaderOption("WINRS_SKIP_CMD_SHELL", "FALSE")).
  		Build()
  
  	body := message.CreateBodyElement("CommandLine", soap.DOM_NS_WIN_SHELL)
  
  	// ensure special characters like & don't mangle the request XML
  	command = "<![CDATA[" + command + "]]>"
  	commandElement := message.CreateElement(body, "Command", soap.DOM_NS_WIN_SHELL)
  	commandElement.SetContent(command)
  
  	for _, arg := range arguments {
  		arg = "<![CDATA[" + arg + "]]>"
  		argumentsElement := message.CreateElement(body, "Arguments", soap.DOM_NS_WIN_SHELL)
  		argumentsElement.SetContent(arg)
  	}
  
  	return message
  }
docs: // NewExecuteCommandRequest exec command on specific shellID