Мне нужно передать некоторые аргументы из VBA7 в скрипт Powershell (версия 4.0). Я смог запустить сценарий PS, введя все аргументы вручную в редакторе Powershell и запустив его, чтобы проверить, работает ли скрипт. Вот PS сценарий:Как передать аргументы из сценария VBA в Powershell
param(
$pw,
$from ="",
$to ="",
$subject = "",
$body = "",
$file = "",
$server = "imap.myserver.com",
$port = 111
)
$pw = ConvertTo-SecureString $pw -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($from, $pw)
try{
Send-MailMessage -From $from -to $to -SmtpServer $server -Body $body -Subject $subject -Attachments $file -Port $port -Credential $cred -ErrorAction Stop
Exit 0;
}
catch
{
Write-Host $error[0]
Exit 1;
}
По какой-то причине, когда я называю этот сценарий из VBA это не работает, у меня нет никаких сообщений об ошибках, я могу видеть, что Powershell вызывается из макроса, но Ничего не произошло. Может быть, синтаксис неверен? Я пробовал добавлять цитаты здесь и там, но без успеха. Ниже приведена упрощенная версия кода:
Sub CallPowerShellWithArguments()
Call Shell("powershell.exe -ExecutionPolicy Bypass C:\Program Files (x86)\mailsend\send_reports.ps1 -pw Mypassword -from [email protected] -to [email protected] -subject MyEmail -body This is my test -file C:\mysql\test.tx")
End Sub
Вам не нужны кавычки вокруг ваших параметров? Например. путь? Попробуйте: «" C: \ Program Files (x86) \ mailsend \ send_reports.ps1 "" – vacip
Кроме того, если вы просто скопируете код в нормальное CMD-окно, оно работает правильно? – vacip
@vacip Я пытался использовать двойные кавычки, я получаю синтаксическую ошибку. И да, код работает в CMD-окне. Вопрос действительно кажется в аргументах, проходящих – Seva