¿Qué módulo de PowerShell se puede utilizar para controlar su bandeja de entrada?

¿Qué módulo de PowerShell se puede utilizar para controlar su bandeja de entrada?

Estoy cansado de intentar utilizar la GUI de Outlook para crear/eliminar/administrar reglas de la bandeja de entrada; lleva una eternidad y apesta.

Entiendo que hay cmdlets en PowerShell que le permiten hacer esto tanto en el lado del servidor como en el del cliente.

No tengo acceso al lado del servidor, solo me interesa administrar mi propia bandeja de entrada con estas reglas.

El siguiente artículo parece mencionar algunos cmdlets que serían geniales para esto, pero no puedo usarlos porque no sé desde dónde importar las bibliotecas:

https://www.codetwo.com/admins-blog/managing-outlook-rules-powershell/

¿Cómo instalo los cmdlets primero? ¿Dónde puedo obtenerlos y con qué necesito importarlos a un script?

Respuesta1

Colocar esto aquí porque es demasiado largo para esa sección de comentarios.

Controlar su buzón es cuestión de decir: ¿está hablando solo de usted en su cliente independiente (fat, cloud o ambos? recuerde que puede agregar su cuenta de Outlook.com directamente en su cliente fat de Outlook) o para los usuarios de su empresa. .

No utiliza cmdlets de Exchange para controlar Outlook local. Para utilizar los cmdlets de Exchange debe instalar el Shell de administración de Exchange en su computadora...

Instalar las herramientas de administración de Exchange

...o utilice la comunicación remota implícita de PowerShell para enviar esos cmdlets a su host. La comunicación remota implícita también es la forma en que se utilizan los cmdlets de Exchange para O365.Estos están bien documentados/detalles por Microsoft y muchos blogs en toda la web y en videos de Youtube.

Conéctese a Office 365 PowerShell

Conéctese a todos los servicios de Office 365 en una única ventana de Windows PowerShell

Conéctese a todos los servicios de Office 365 PowerShell (también admite MFA)

Incluso un módulo prediseñado para este esfuerzo.

Conectar-O365 1.7.9

Conéctese a los servicios de Office 365 mediante PowerShell

Script de PowerShell con funciones auxiliares para conectarse a Office 365 o Exchange local. Facilita la conexión a diferentes servicios de Office 365 utilizando las mismas credenciales (no MFA). Ya no es necesario recordar varias formas de conectarse a cada carga de trabajo.

Administrar las reglas de Outlook de los usuarios desde Exchange Management Shell (con PowerShell)

Youtube-Powershell O365

Outlook en línea tiene una API Rest para trabajar al igual que Exchange, EWS

Descripción general de las API de administración de Office 365

cliente de perspectiva

YouTube-

Las API REST de Outlook ofrecen una manera fácil de acceder a los datos de correo, calendario y contactos para cualquier usuario de Office 365 o outlook.com. En este vídeo, repasaremos algunas de las funciones clave que se introducen en la versión 2.0 de la API: webhooks, fotos, recordatorios y zona horaria.

Utilice PowerShell para extraer datos de su bandeja de entrada de Outlook

# 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

Debes ser administrador en O365 para hacer esto. Outlook en O365 no es Exchange, al igual que Outlook en su escritorio no es Exchange. Debe usar Outlook COM (como se indicó anteriormente y a continuación) para trabajar en el cliente Outlook; esto no es aplicable en línea.

PowerShell recupera direcciones de Outlook

Cómo: enviar correo desde Powershell usando Outlook

Manipular objetos de Outlook con Powershell

Respuesta2

Hasta donde yo sé, no existe un módulo de PowerShell estándar disponible para Outlook; sin embargo, puede utilizar la API de Outlook que brinda acceso al Microsoft.Office.Interop.Outlookespacio de nombres. Un breve ejemplo para crear una nueva regla es el siguiente:

Primero obtenemos el espacio de nombres:

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")

Ahora especificamos la carpeta de origen (Bandeja de entrada), creamos una nueva regla y especificamos la carpeta a copiar (Notificaciones)

$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()

Puede encontrar más ejemplos e información sobre el uso del espacio de nombres de Outlook en PowerShell aquí: https://docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/powershell-managing-an-outlook-mailbox-with-powershell

Además, puedes encontrar toda la información sobre el modelo de objetos de Outlook aquí: https://docs.microsoft.com/nl-nl/office/vba/api/overview/Outlook/object-model

información relacionada