Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

Send reminder Outlook

Publié le par damcuvelier

0. $actionDate = (<date du lot>).tostring("yyyy-MM-dd HH:mm")

 

1. Télécharger et installer le module EWS Managed API sur le serveur SCCM:

https://www.powershellgallery.com/packages/PSEWS.Api/2.2.1.0

 

2. Script:

$rappeldate = $actionDate

 

$user =

$domain =

$psw = 

$ExchangeSrvUrl = "https://serveur_exchange/EWS/Exchange.asmx"

$subject = 

$body =

$destinataire = <service de l'opérateur>

$lieu = $CMDrive

 

# Charger l'API EWS

Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"

 

# Configuration des paramètres de connexion

$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService

$service.Credentials = New-Object Net.NetworkCredential($user, $psw, $domain)

 

# URL de l'endpoint EWS

$service.Url = New-Object Uri($ExchangeSrvUrl)

 

# Création de l'objet rendez-vous

$appointment = New-Object Microsoft.Exchange.WebServices.Data.Appointment($service)

$appointment.Subject = $Subject

$appointment.Body = $body

$appointment.Start = [datetime]::ParseExact($rappeldate, "yyyy-MM-dd HH:mm", $null)

$appointment.End = $appointment.Start.AddHours(1)

$appointment.Location = $lieu

$appointment.ReminderMinutesBeforeStart = 15

 

# Ajouter les participants

$participant = New-Object Microsoft.Exchange.WebServices.Data.Attendee("$destinataire")

$appointment.RequiredAttendees.Add($participant)

 

# Envoyer le rendez-vous

$appointment.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy)

 

 

//////

Modifier :

 

$user =

$domain =

$psw = 

$ExchangeSrvUrl = "https://serveur_exchange/EWS/Exchange.asmx"

$addBody = 

 

# Charger l'API EWS

Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"

 

# Configuration des paramètres de connexion

$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService

$service.Credentials = New-Object Net.NetworkCredential($user, $psw, $domain)

 

# URL de l'endpoint EWS

$service.Url = New-Object Uri($ExchangeSrvUrl)

 

# Définir le filtre de recherche (par sujet)

$searchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+ContainsSubstring([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject, $subject)

 

# Définir le dossier à rechercher (Calendrier)

$folderId = [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar

 

# Définir la vue (par exemple, les 10 premiers éléments)

$view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(10)

 

# Rechercher le rendez-vous

$findResults = $service.FindItems($folderId, $searchFilter, $view)

 

# Vérifier si des éléments sont trouvés

if ($findResults.Items.Count -gt 0) {

    # Obtenir le premier rendez-vous trouvé (vous pouvez adapter selon vos besoins)

    $appointment = [Microsoft.Exchange.WebServices.Data.Appointment]$findResults.Items[0]

 

    # Charger les détails complets du rendez-vous

    $appointment.Load()

 

    # Modifier les détails du rendez-vous

$oldbody = $appointment.Body

$Newbody = $oldbody`n$addbody"

 

    # $appointment.Subject = "Nouveau sujet du rappel"

    $appointment.Body = $NewBody

    # $appointment.Start = [datetime]::ParseExact("2024-06-10 14:00", "yyyy-MM-dd HH:mm", $null)

   # $appointment.End = $appointment.Start.AddHours(1)

   # $appointment.Location = "Nouveau lieu du rendez-vous"

    # $appointment.ReminderMinutesBeforeStart = 30

 

    # Enregistrer les modifications

    $appointment.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite, [Microsoft.Exchange.WebServices.Data.SendInvitationsOrCancellationsMode]::SendToAllAndSaveCopy)

 

    Write-Host "Le rendez-vous a été modifié avec succès."

}

 

Commenter cet article