
Ich habe es satt, mit der Benutzeroberfläche von Outlook Posteingangsregeln zu erstellen, zu entfernen oder zu verwalten. Es dauert ewig und ist nervig.
Ich verstehe, dass es in Powershell Cmdlets gibt, die Ihnen dies sowohl auf der Server- als auch auf der Clientseite ermöglichen.
Ich habe keinen Zugriff auf die Serverseite, ich bin nur daran interessiert, meinen eigenen Posteingang mit diesen Regeln zu verwalten.
Der folgende Artikel scheint einige Cmdlets zu erwähnen, die hierfür großartig wären, aber ich kann sie nicht verwenden, weil ich nicht weiß, woher ich die Bibliotheken importieren soll:
https://www.codetwo.com/admins-blog/managing-outlook-rules-powershell/
Wie installiere ich die Cmdlets zunächst? Wo bekomme ich sie her und was benötige ich, um sie in ein Skript zu importieren?
Antwort1
Ich platziere dies hier, weil es für diesen Kommentarbereich zu lang ist.
Beim Zähmen Ihres Postfachs geht es darum, ob Sie nur mit Ihrem eigenständigen Client (Fat, Cloud oder beides – denken Sie daran, dass Sie Ihr Outlook.com-Konto direkt zu Ihrem Outlook-Fat-Client hinzufügen können) oder mit den Benutzern in Ihrem Unternehmen sprechen.
Sie verwenden keine Exchange-Cmdlets, um das lokale Outlook zu steuern. Um Exchange-Cmdlets zu verwenden, müssen Sie die Exchange-Verwaltungsshell auf Ihrem Computer installieren ...
... oder verwenden Sie PowerShell Implicit Remoting, um diese Cmdlets per Proxy an Ihren Host zu senden. Implicit Remoting ist auch die Art und Weise, wie Sie Exchange-Cmdlets für O365 verwenden.Diese sind von Microsoft und in zahlreichen Blogs im gesamten Internet und in YouTube-Videos gut dokumentiert/ausführlich beschrieben.
Herstellen einer Verbindung mit Office 365 PowerShell
Verbindung zu allen Office 365-Diensten PowerShell herstellen (unterstützt auch MFA)
Sogar vorgefertigte Module für diesen Zweck.
Herstellen einer Verbindung mit Office 365-Diensten mithilfe von PowerShell
PowerShell-Skript mit Hilfsfunktionen zum Herstellen einer Verbindung mit Office 365 oder Exchange On-Premises. Erleichtert die Verbindung mit verschiedenen Office 365-Diensten mit denselben Anmeldeinformationen (ohne MFA). Sie müssen sich nicht mehr verschiedene Verbindungsmethoden für jede Workload merken.
Verwalten der Outlook-Regeln von Benutzern über die Exchange-Verwaltungsshell (mit PowerShell)
Outlook Online verfügt über eine Rest-API, mit der Sie arbeiten können, ebenso wie Exchange, EWS
Übersicht über Office 365-Verwaltungs-APIs
Outlook-Client
Outlook REST-APIs bieten jedem Office 365- oder Outlook.com-Benutzer eine einfache Möglichkeit, auf E-Mail-, Kalender- und Kontaktdaten zuzugreifen. In diesem Video gehen wir auf einige der wichtigsten Funktionen ein, die in V2.0 der API eingeführt wurden: Webhooks, Fotos, Erinnerungen und Zeitzone.
Verwenden Sie PowerShell zum Data Mining Ihres Outlook-Posteingangs
# Get-OutlookInBox function
Function Get-OutlookInBox
{
<#
.Synopsis
This function returns InBox items from default Outlook profile
.Description
This function returns InBox items from default Outlook profile. It
uses the Outlook interop assembly to use the olFolderInBox enumeration.
It creates a custom object consisting of Subject, ReceivedTime, Importance,
SenderName for each InBox item.
*** Important *** depending on the size of your InBox items this function
may take several minutes to gather your InBox items. If you anticipate
doing multiple analysis of the data, you should consider storing the
results into a variable, and using that.
.Example
Get-OutlookInbox |
where { $_.ReceivedTime -gt [datetime]”5/5/11″ -AND $_.ReceivedTime -lt `
[datetime]”5/10/11″ } | sort importance
Displays Subject, ReceivedTime, Importance, SenderName for all InBox items that
are in InBox between 5/5/11 and 5/10/11 and sorts by importance of the email.
.Example
Get-OutlookInbox | Group-Object -Property SenderName | sort-Object Count
Displays Count, SenderName and grouping information for all InBox items. The most
frequently used contacts appear at bottom of list.
.Example
$InBox = Get-OutlookInbox
Stores Outlook InBox items into the $InBox variable for further
“offline” processing.
.Example
($InBox | Measure-Object).count
Displays the number of messages in InBox Items
.Example
$InBox | where { $_.subject -match ‘2011 Scripting Games’ } |
sort ReceivedTime -Descending | select subject, ReceivedTime -last 5
Uses $InBox variable (previously created) and searches subject field
for the string ‘2011 Scripting Games’ it then sorts by the date InBox.
This sort is descending which puts the oldest messages at bottom of list.
The Select-Object cmdlet is then used to choose only the subject and ReceivedTime
properties and then only the last five messages are displayed. These last
five messages are the five oldest messages that meet the string.
.Notes
NAME: Get-OutlookInbox
AUTHOR: ed wilson, msft
LASTEDIT: 05/13/2011 08:36:42
KEYWORDS: Microsoft Outlook, Office
HSG: HSG-05-26-2011
.Link
Http://www.ScriptingGuys.com/blog
#Requires -Version 2.0
#>
Add-type -assembly “Microsoft.Office.Interop.Outlook” | out-null
$olFolders = “Microsoft.Office.Interop.Outlook.olDefaultFolders” -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace(“MAPI”)
$folder = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$folder.items |
Select-Object -Property Subject, ReceivedTime, Importance, SenderName
} #end function Get-OutlookInbox
Dazu müssen Sie ein Administrator in O365 sein. Outlook in O365 ist nicht Exchange, genauso wie Outlook auf Ihrem Desktop nicht Exchange ist. Sie müssen Outlook COM verwenden (wie oben und im Folgenden angegeben), um am Outlook-Client zu arbeiten, dies ist nicht für Online gedacht.
PowerShell ruft Outlook-Adressen ab
Vorgehensweise: Senden von E-Mails aus Powershell mit Outlook
Antwort2
Soweit ich weiß, gibt es für Outlook kein Standard-PowerShell-Modul, Sie können jedoch die Outlook-API verwenden, die Zugriff auf den Microsoft.Office.Interop.Outlook
Namespace gewährt. Ein kurzes Beispiel zum Erstellen einer neuen Regel lautet wie folgt:
Zuerst holen wir uns den Namespace:
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
Nun geben wir den Ursprungsordner (Posteingang) an, erstellen eine neue Regel und geben den Ordner an, in den kopiert werden soll (Benachrichtigungen).
$inbox = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)
$MyFolder1 =
$namespace.Folders.Item('[email protected]').Folders.Item('NOTIFICATIONS')
$rules = $namespace.DefaultStore.GetRules()
$rule = $rules.create("My rule1: Receiving Notification",
[Microsoft.Office.Interop.Outlook.OlRuleType]::olRuleReceive)
$rule_body = $rule.Conditions.Subject
$rule_body.Enabled = $true
$rule_body.Text = @('Completed Notification')
$action = $rule.Actions.CopyToFolder
$action.enabled = $true
[Microsoft.Office.Interop.Outlook._MoveOrCopyRuleAction].InvokeMember(
"Folder",
[System.Reflection.BindingFlags]::SetProperty,
$null,
$action,
$MyFolder1)
$rules.Save()
Weitere Beispiele und Informationen zur Verwendung des Outlook-Namespace in Powershell finden Sie hier: https://docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/powershell-managing-an-outlook-mailbox-with-powershell
Darüber hinaus finden Sie hier alle Informationen zum Outlook-Objektmodell: https://docs.microsoft.com/nl-nl/office/vba/api/overview/Outlook/object-model