func()

in gke-windows-builder/builder/builder/remote.go [162:194]


func (r *RemoteWindowsServer) RunCommand(command string, path string, runTimeout time.Duration) error {
	if runTimeout <= 0 {
		return errors.New("runTimeout must be greater than 0")
	}

	cmdstring := fmt.Sprintf(`cd %s & %s`, path, 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
}