func()

in windows-builder/builder/builder/remote.go [154:188]


func (r *Remote) Run(command string, runTimeoutMin int) error {
	if runTimeoutMin <= 0 {
		return errors.New("runTimeout must be greater than 0")
	}

	runTimeout := time.Duration(runTimeoutMin) * time.Minute

	cmdstring := fmt.Sprintf(`cd c:\workspace & %s`, command)
	endpoint := winrm.NewEndpoint(*r.Hostname, 5986, true, true, nil, nil, nil, runTimeout)
	w, err := winrm.NewClient(endpoint, *r.Username, *r.Password)
	if err != nil {
		return err
	}
	shell, err := w.CreateShell()
	if err != nil {
		return err
	}
	var cmd *winrm.Command
	cmd, err = shell.Execute(cmdstring)
	if err != nil {
		return err
	}

	go io.Copy(os.Stdout, cmd.Stdout)
	go io.Copy(os.Stderr, cmd.Stderr)

	cmd.Wait()
	shell.Close()

	if cmd.ExitCode() != 0 {
		return fmt.Errorf("command failed with exit-code:%d", cmd.ExitCode())
	}

	return nil
}