Попытка отправить почту в фоновом режиме, используя start-job , но возникла проблема с передачей параметров в блок скриптов.

Почтовые параметры определяют:

$mailParams=@{
    To = $AddressTo
    From = $AddressFrom
    Subject = $Subject
    Body = $Body
    SMTPServer = $SMTPServer
    #BodyAsHTML = $True
    #Port = 587
    #UseSSL = $True
    #Credential = $mailCred
}#End mailParams 

Команда отправки почты:

Send-MailMessage @mailparams

Ожидаемое:

start-job -scriptblock {Send-MailMessage @mailparams}

Пытался использовать start-job -scriptblock {Send-MailMessage} -ArgumentList $mailparams , но та же проблема, все параметры нулевые

Кстати, откройте для любого лучшего предложения, как выполнить его в фоновом режиме

1 ответ1

2

вам нужно иметь param() внутри вашего Scriptblock для получения параметров, которые вы отправляете в ArgumentList

$MailParams = @{
    To = $AddressTo
    From = $AddressFrom
    Subject = $Subject
    Body = $Body
    SMTPServer = $SMTPServer
    #BodyAsHTML = $True
    #Port = 587
    #UseSSL = $True
    #Credential = $mailCred
}

Start-Job { param($MailParams) ; Send-MailMessage @MailParams } -ArgumentList $MailParams

Я всегда стараюсь думать о блоке скриптов как о функции. в функции вам также нужно передать и получить аргументы / параметры. То же самое касается скриптовых блоков.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .