Send reminder Outlook
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."
}
/image%2F0881799%2F20140610%2Fob_a8c7fe_logo2.jpg)
Commenter cet article