@bsbak

Как запустить консольную команду с аргументами?

не могу понять как запустить команду (PowerShell) в linux из Go, просто в консоле запускаю так и все работает, а когда из Go то отображает сообщение как будто запустил команду без аргументов.

pwsh -Command 'Send-MailMessage -SMTPServer localhost -Port 25 -To testuser@localhost -From youremail@domain.com -Subject "This is a test email" -Body "test body"
// в консоле отправляется нормально

из Go:
pwsh = "pwsh"
command = "-Command 'Send-MailMessage -SMTPServer localhost -Port 25 -To " + recipient + " -From " + user.Email + " -Subject \"" + subject + "\" -Body \"" + message + "\"'"
output, err := exec.Command(pwsh, command).Output()
//  результат: как будто просто написал pwsh
//  exit status 64
//  2020/05/05 01:33:48
//  Usage: pwsh[.exe] [-Login] [[-File] <filePath> [args]]
 //                 [-Command { - | <script-block> [-args <arg-array>]
 //                               | <string> [<CommandParameters>] } ]
 //                 [-ConfigurationName <string>] [-CustomPipeName <string>]
//  ...

Подскажите как запустить из Go...
  • Вопрос задан
  • 339 просмотров
Решения вопроса 1
command должно быть слайсом аргументов, а у вас это просто строка

Нужно так:
pwsh = "pwsh"
command = []string{"-Command", "Send-MailMessage -SMTPServer localhost -Port 25 -To " + recipient + " -From " + user.Email + ` -Subject "` + subject + `" -Body "` + message + `"`
output, err := exec.Command(pwsh, command...).Output()

надеюсь, я верно понял синтаксис пауэршелла, основной принцип, думаю, понятен.

P.S. Использовать powershell в Линуксе, это мсье, конечно, знает толк.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы