Ошибка отправки почтового сообщения из-за отсутствия вложения (переменная испорчена) - PullRequest
1 голос
/ 20 января 2012

Я отправляю кучу файлов в виде вложений с Send-MailMessage Некоторые из файлов существуют, некоторые нет, поэтому Send-MailMessage завершается ошибкой, если один из файлов отсутствует.

Есть ли способ сделать Test-Path и очистить $attachments, если файл отсутствует?

Мой код:

$Attachments = "$longlist_file","$PingList_File","$quicklist_file", `
  "$nConf_import_host_file","$nConf_import_service_file", `
  "$nconf_export_host_file","$nconf_export_service_file"

# Sending mail
send-mailmessage -to $ToAddress -from $FromAddress -smtpserver $SMTPServer `
  -subject $MessageSubject -Body $MessageBody -Attachments $Attachments

Ответы [ 4 ]

6 голосов
/ 20 января 2012

Возможно

$Attachments = $longlist_file","$PingList_File","$quicklist_file", `
  "$nConf_import_host_file", "$nConf_import_service_file", `
  "$nconf_export_host_file", "$nconf_export_service_file" `
  | Where-Object { Test-Path $_ }
2 голосов
/ 20 января 2012

Создать новый список только с существующими файлами:

$realFiles = $Attachments | ? {Test-Path -Path $_}

Затем отправить.

send-mailmessage -to $ToAddress -from $FromAddress -smtpserver $SMTPServer -subject $MessageSubject -Body $MessageBody -Attachments $realFiles 
0 голосов
/ 21 января 2012
get-childitem $attachments -ea 0 | send-mailmessage......
0 голосов
/ 20 января 2012

Примерно так должно получиться:

$Attachments = @("$longlist_file","$PingList_File","$quicklist_file","$nConf_import_host_file","$nConf_import_service_file","$nconf_export_host_file","$nconf_export_service_file")
$TestedAttachments = @()
foreach($file in $Attachments)
{
    try
    {
        $file = get-content -path $file
        write-host "File $($file) exists, adding to tested list"
        $TestedAttachments += $file
    }
    catch[system. exception]
    {
        write-host "File $(file) was not found."
    }
}
send-mailmessage -to $ToAddress -from $FromAddress -smtpserver $SMTPServer -subject $MessageSubject -Body $MessageBody -Attachments $TestedAttachments

С уважением Arcass

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...