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
}