code: func (c *Communicator) Start(rc *remote.Cmd) error {
  	rc.Init()
  	log.Printf("[DEBUG] starting remote command: %s", rc.Command)
  
  	// TODO: make sure communicators always connect first, so we can get output
  	// from the connection.
  	if c.client == nil {
  		log.Println("[WARN] winrm client not connected, attempting to connect")
  		if err := c.Connect(nil); err != nil {
  			return err
  		}
  	}
  
  	status, err := c.client.Run(rc.Command, rc.Stdout, rc.Stderr)
  	rc.SetExitStatus(status, err)
  
  	return nil
  }
docs: // Start implementation of communicator.Communicator interface