2016-03-01 3 views
2

Мне нужно передать некоторые аргументы из 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 
+0

Вам не нужны кавычки вокруг ваших параметров? Например. путь? Попробуйте: «" C: \ Program Files (x86) \ mailsend \ send_reports.ps1 "" – vacip

+0

Кроме того, если вы просто скопируете код в нормальное CMD-окно, оно работает правильно? – vacip

+0

@vacip Я пытался использовать двойные кавычки, я получаю синтаксическую ошибку. И да, код работает в CMD-окне. Вопрос действительно кажется в аргументах, проходящих – Seva

ответ

0

Не уверен, что это будет правильный ответ, но это определенно то, что вы можете попробовать. Я бы предложил предоставить полный путь для PowerShell.exe. Например,

C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe 
Смежные вопросы