2016-10-17 6 views
0

Ich habe ein Powershell-Skript wie folgt. Hier überprüfe ich, ob eine .err-Datei vor 5 Minuten erstellt wurde und wenn ja, sende ich eine E-Mail für jede Fehlerdatei mit den ersten 5 Zeilen der .err-Datei. Wenn ich versuche, das Skript auszuführen, erhalte ich eine E-Mail für die erste Datei, aber ich bekomme einen Fehler für die zweite Datei, wie im folgenden Schnappschuss gezeigt. Ich bin neu in Powershell, und ich habe Mühe, eine Lösung für diesen Fehler zu finden.Fehler beim Senden von E-Mail durch Outlook in Power Shell-Skript

$ChkFile = "D:\ErrorLog\*.err" 
$ChkFilePath = "D:\ErrorLog" 
$o = New-Object -comObject Outlook.Application 
$mail = $o.CreateItem(0) 
$mail.importance = 2 
$mail.subject = “Error Log“ 
$mail.To = “[email protected]“ 
$FileExists = Test-Path $ChkFile 
$FileCount = Get-ChildItem $ChkFilePath *.err | Measure-Object | %{$_.Count} 
If ($FileExists -eq $True) { 

    If ($FileCount -gt 0) 
    { 
     Foreach($file in (Get-ChildItem $ChkFile)) 
     { 

      Write-Host $file 
      $createtime = $file.LastWriteTime 
      $nowtime = get-date 
      if (($nowtime - $createtime).totalminutes -gt 5) 
      { 
       $GetFileContent = Get-Content $file -totalcount 5 
       $mail.body = $GetFileContent 
       Write-Host $GetFileContent 
       $mail.Send() 

      } 


     } 


    } 
} 

Fehler erzeugt, während der Ausführung des Skripts: enter image description here

+0

Sie eingecheckt haben könnte 'Verschicken MailMessage' Cmdlets –

Antwort

1

Nach rufen Sie die $mail.Send() Methode, die Sie wahrscheinlich Ihre E-Mail-Objekt erstellen müssen. Sie können dies tun, indem Sie die Objekt-Erstellung in die Schleife einfügen.

$ChkFile = "D:\ErrorLog\*.err" 
$ChkFilePath = "D:\ErrorLog" 
$o = New-Object -comObject Outlook.Application 
$FileExists = Test-Path $ChkFile 
$FileCount = Get-ChildItem $ChkFilePath *.err | Measure-Object | %{$_.Count} 
If ($FileExists -eq $True) { 

    If ($FileCount -gt 0) { 
    Foreach($file in (Get-ChildItem $ChkFile)) { 
     Write-Host $file 
     $createtime = $file.LastWriteTime 
     $nowtime = get-date 
     if (($nowtime - $createtime).totalminutes -gt 5) { 
      $mail = $o.CreateItem(0) 
      $mail.importance = 2 
      $mail.subject = "Error Log" 
      $mail.To = "[email protected]" 
      $mail.importance = 2 
      $mail.subject = "Error Log" 
      $mail.To = "[email protected]" 
      $GetFileContent = Get-Content $file -totalcount 5 
      $mail.body = $GetFileContent 
      Write-Host $GetFileContent 
      $mail.Send() 

     } 
    } 
    } 
} 
+0

Vielen Dank !! Es funktionierte... – Priyanka

Verwandte Themen