Powershell kann nicht erstellen Sie ein Outlook-COM-Objekt von der Eingabeaufforderung aus
Ich habe ein Skript zum verschicken von E-mails über Microsoft Outlook von der Eingabeaufforderung aus. Dies funktioniert gut, wenn ich ihn von innen PowerShell Konsole oder ISE. Aber als ich versuchte, führen gleichen von der klassischen Windows-Eingabeaufforderung (cmd.exe) auch mit Admin-rechten, es war nicht in der Lage zum erstellen von Outlook-COM-Objekt. Hier ist die Linie zum erstellen von COM-Objekt:
$objOutLook = New-Object -com Outlook.Application
Dies ist, wie rufe ich mein script aus cmd.exe (Administratorrechte) :
D:>powershell D:\MiscBuildTasks.ps1 -sendmail -MailTo '[email protected]'
und hier ist das Fehlerprotokoll:
New-Object : Abrufen des COM-Klassenfactory für die Komponente mit CLSID
{0006F03A-0000-0000-C000-000000000046} konnte aufgrund des folgenden
Fehler: 80080005-Server-Ausführung fehlgeschlagen (Ausnahme von HRESULT:
0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
Bei D:\MiscBuildTasks.ps1:81 char:12
+ $Outlook = New-Object-ComObject Outlook.Anwendung
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException
+ FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Befehle.NewObjectCommand
Wie kann ich es machen das arbeiten aus cmd.exe (Windows-Eingabeaufforderung)??
Dank
- Möglicherweise Verwandte: stackoverflow.com/questions/14809242/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
CO_E_SERVER_EXEC_FAILURE
im Fall von Outlook bedeutet, dass die aufrufende Anwendung und den COM-server laufen in unterschiedlichen sicherheitskontexten. Wenn die Eingabeaufforderung mit erhöhten Berechtigungen, entweder stellen Sie sicher, dass Outlook gestartet mit erhöhten rechten, oder es wird nicht ausgeführt, wenn Ihr code ausgeführt wird - auf diese Weise wird Outlook gestartet werden, indem Sie Ihren code und es läuft mit den gleichen rechten auszuführen.Den Überlegungen zur serverseitigen Automatisierung von Office Artikel besagt Folgendes:
Microsoft derzeit nicht empfehlen, und nicht unterstützt, Automatisierung von Microsoft Office-Anwendungen von jedem unbeaufsichtigten, nicht-interaktiven client-Anwendung oder Komponente (einschließlich ASP, ASP.NET, DCOM und NT-Dienste), da Office zeigen können instabiles Verhalten und/oder deadlock, wenn Office laufen in dieser Umgebung.
Wenn Sie eine Lösung, die läuft in einem server-side-Kontext, sollten Sie versuchen, zu verwenden Komponenten, die gemacht wurden, sicher für die unbeaufsichtigte Ausführung. Oder sollten Sie versuchen, alternativen zu finden, die es ermöglichen, zumindest einen Teil der code ausgeführt werden, der client-Seite. Wenn Sie eine Office-Anwendung von einem server-side-Lösung wird die Anwendung fehlen, die viele der notwendigen Fähigkeiten, um erfolgreich ausgeführt. Zusätzlich, Sie werden die Risiken, die mit der Stabilität der Gesamtlösung.
Office-Anwendungen übernehmen, eine Benutzer-Identität, wenn die Anwendungen ausgeführt werden, auch wenn die Automatisierung startet die Anwendungen. Die Anwendungen versuchen zu initialisieren, Symbolleisten, Menüs, Optionen, Drucker, und einige add-ins, basierend auf den Einstellungen in der Benutzer Registrierungsstruktur für den Benutzer, der die Anwendung startet. Viele Dienste laufen unter Konten, die keine user-profile (wie das SYSTEM-Konto oder das Konto IWAM_[servername] Konten). Daher kann das Amt nicht korrekt initialisiert beim Start. In dieser situation, im Büro gibt einen Fehler zurück, auf die Funktion CreateObject oder CoCreateInstance-Funktion. Auch wenn die Office-Anwendung gestartet werden können, andere Funktionen möglicherweise nicht ordnungsgemäß, wenn kein Benutzerprofil vorhanden ist.
Ich hatte das gleiche Problem, dachte ich, es war eine Kombination von 3 Dingen.
Wenn Ihre installation von Outlook 32-bit, stellen Sie sicher, dass Sie die 32-bit-version von PowerShell (x86) und nicht die 64-bit-Version.