Usando parâmetros externos no ScriptBlock ao enviar mensagens de e-mail no script do PowerShell

0

Tentando enviar e-mails em segundo plano, usando start-job , mas tendo problemas ao transmitir parâmetros para o scriptblock.

Mail params definem:

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

Comando de envio de e-mail:

Send-MailMessage @mailparams

Esperado:

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

Tentou usar start-job -scriptblock {Send-MailMessage} -ArgumentList $mailparams , mas o mesmo problema, todos os parâmetros são nulos

Btw, aberto para qualquer sugestão melhor de como executá-lo em segundo plano

    
por igor 14.08.2018 / 12:54

1 resposta

2

você precisa ter um param() dentro do Scriptblock para receber os parâmetros que está enviando em 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

Eu sempre tento pensar em um scriptblock como uma função. em uma função você também precisa passar e receber Argumentos / Parâmetros. O mesmo vale para os blocos de script.

    
por 14.08.2018 / 13:07