通过Powershell将多个附件添加到具有txt文件路径的电子邮件中

时间:2019-04-28 20:43:23

标签: powershell

使用powershell,我想扫描包含多个txt文件(备份日志文件)的文件夹,并在发生错误的情况下创建一封电子邮件,其中包含包含附加到邮件的错误消息的特定txt文件。

此刻,我确定了日志文件并将它们的路径写入单独的txt文件。

Get-ChildItem $pfad -Filter *Error*.txt -Recurse | Select-String "Error occured" | Select-Object -expandproperty Path | Out-File -FilePath $filelist

我得到一个包含此内容的txt文件(没有标题,没有空行):

D:\Share\test2\Neues TextdokumentError.txt
D:\Share\test2\Testfile fbibgfwErroriebgfvibfvsbvf full.txt

然后我要创建一封电子邮件,并附加来自单独的txt文件的文件。

$logfiles = Get-Content $filelist

ForEach($log in $logfiles)
  {
  Write-Host “Attaching File :- ” $log
  $attachment = New-Object System.Net.Mail.Attachment –ArgumentList $log
  $msg.Attachments.Add($attachment)
  }

这是我不断得到的结果:

Attaching File :-  D:\Share\test2\Neues TextdokumentError.txt
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\test\Unbenannt1.ps1:43 Zeichen:3
+   $msg.Attachments.Add($attachment)
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Attaching File :-  D:\Share\test2\Testfile fbibgfwErroriebgfvibfvsbvf full.txt
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In C:\test\Unbenannt1.ps1:43 Zeichen:3
+   $msg.Attachments.Add($attachment)
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

英语中的错误表示:“无法为具有NULL的表达式调用方法。”

显示的路径正确无误,文件在那里并且它们具有内容。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的文件路径中似乎包含空格。如果在定义"$log"时将$attachment放在引号中会发生什么?

更好的解决方案::为避免从文本文件中解析字符串而引起的麻烦,请不要将文件列表输出为文本。只需使用文件系统对象即可。

$logfiles = Get-ChildItem $pfad -Filter *Error*.txt -Recurse | Select-String "Error occured" -List | Select Path

(未经测试,请检查命令是否返回您要查找的文件)