pat.bat
Goto Top

Powershell Skript Fehlermeldung - Outlook und Log Probleme

Hallo,

ich habe gerade folgendes Problem. In den letzten Wochen wo das Skript lief gab es keine Probleme. Aber heute lief das Skript zum verschicken von E-Mails nicht mehr, mit folgendem Log:

Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "G:\FD_50_Bank\System\Logs\EMAIL.log".  
#################### 19-03-2019__07:34:54 ###################
PS G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail> TerminatingError(): "Ausnahme beim Aufrufen von "CreateItem" mit 1 Argument(en):  "Das COM-Objekt des Typs "Microsoft.Office.Interop.Outlook.ApplicationClass" kann nicht in den Schnittstellentyp "Microsoft.Office.Interop.Outlook._Application" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{00063001-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht registriert (Ausnahme von HRESULT: 0x80040155).""  
Exception aufgetreten
>> TerminatingError(Out-File): "Der Prozess kann nicht auf die Datei "G:\FD_50_Bank\System\Logs\EMAIL.log" zugreifen, da sie von einem anderen Prozess verwendet wird."  
Out-File : Der Prozess kann nicht auf die Datei "G:\FD_50_Bank\System\Logs\EMAIL.log" zugreifen, da sie von einem   
anderen Prozess verwendet wird.
In G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail\SendMail.ps1:162 Zeichen:31
+             "Exception: $temp" | Out-File $Logfile -Append  
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], IOException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
Out-File : Der Prozess kann nicht auf die Datei "G:\FD_50_Bank\System\Logs\EMAIL.log"  
zugreifen, da sie von einem anderen Prozess verwendet wird.
In G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail\SendMail.ps1:162 Zeichen:31
+             "Exception: $temp" | Out-File $Logfile -Append  
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], IOException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileComm
   and


Ich verstehe nicht warum auf einmal nichts mehr geht und besonders die Outlook Fehlermeldung verwirrt mich...

Ich habe den Code jetzt so angepasst, das er die Log Fehlermeldung mit -ErrorAction Continue loggen aber nicht abbrechen soll.

Nur was genau ist da mit dem Object Outlook plötzlich los :S habe weder was am Skrip noch am Rechner selbst verändert.

$Logfile = "G:\FD_50_Bank\System\Logs\EMAIL.log"  

Unblock-File $Logfile
Start-Transcript -Path $Logfile -ErrorAction Continue

Wenn ich Outlook komplett schließe und das Skript im ISE durchführe kommt jetzt außerdem folgende Message:

PS G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail> G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail\SendMail.ps1
Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "G:\FD_50_Bank\System\Logs\EMAIL.l  
og".  
#################### 19-03-2019__08:00:46 ################### 
Exception aufgetreten
Out-File : Der Prozess kann nicht auf die Datei "G:\FD_50_Bank\System\Logs\EMAIL.log"   
zugreifen, da sie von einem anderen Prozess verwendet wird.
In G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail\SendMail.ps1:162 Zeichen:31
+ ...  "Exception: $temp" | Out-File $Logfile -ErrorAction Continue -Append  
+                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], IOException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileComm 
   and
 
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In G:\FD_50_Bank\System\Aufgabenplanungen\E-Mail\SendMail.ps1:170 Zeichen:1
+ $o.Quit()
+ ~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Soweit ich das lesen kann ignoriert er die -ErrorAction und er kommt nicht damit klar das Outlook Objekt anzulegen, allerdings verstehe ich kein bisschen warum jetzt auf einmal :S

Content-Key: 430126

Url: https://administrator.de/contentid/430126

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: emeriks
emeriks 19.03.2019 um 08:13:49 Uhr
Goto Top
Hi,
"... da sie von einem anderen Prozess verwendet wird."
das kann man doch herausfinden.
Läuft da vielleicht noch eine hängengebliebene Instanz von PowerShell im Hintergrund?
Oder eine Outlook.exe im Hintergrund ohne Fenster?
Schaue mal im TaskManager.

E.
Mitglied: Pat.bat
Pat.bat 19.03.2019 um 08:26:12 Uhr
Goto Top
Nein, es läuft weder eine Outlook Instanz, noch eine Powershell Instanz.

Er springt immer bei der 2ten Anweisung raus, wo er das E-Mail Objekt erstellen soll:

# Erstellen eines Outlook Application Objekts
    $o = New-Object -ComObject Outlook.Application

    $mail = $o.CreateItem(0)
    $mail.importance = $Importance #2 = Wichtige Nachricht
    $mail.subject = "$Subject"  
    $mail.HTMLbody = $Body+=$Signatur2
    $mail.To = "$To" #separate multiple recipients with a ";"  
    $mail.CC = "$CC" #separate multiple recipients with a ";"  

Das $o Objekt ist auch immer leer (Debugger). Was ich nur nicht verstehe, was hat sich verändert, das er das Objekt nicht mehr füllt. Verändert habe ich seit dem letzten Durchlauf nichts.
Mitglied: 138810
Lösung 138810 19.03.2019 aktualisiert um 08:48:23 Uhr
Goto Top
Reparaturinstallation von Office vornehmen, die COM Komponenten sind korrupt oder eine COM-Klassen-Registrierung beschädigt (Hatte ich vor kurzem schon mal). Checke auch deine Hardware(Platten und RAM).
Mitglied: Pat.bat
Pat.bat 21.05.2019 um 08:01:35 Uhr
Goto Top
Es lag tatsächlich an einer korrupten Outlook installation. Hat wohl irgendwas zerschossen von heut auf morgen. Nach einer Reperatur funktioniert das Skript nun wieder.