Question Importer un fichier .ics avec Powershell

Plus d'informations
il y a 6 mois 1 semaine #34329 par Jean Jacques
Bonjour 

J'ai besoin d'ajouter plusieurs calendriers partagés (ics) pour une trentaine de personnes.

Le calendrier provient d'une entreprise A, partagé avec l'entreprise B. 

Je souhaite ajouter ce calendrier (.ics) automatiquement pour tous les utilisateurs en powershell (qu'un dossier soit créé également dans leur calendrier pour chaque ics afin de ne pas mélanger tous les ics)

Microsoft m'a déjà aidé en me donnant ce script :
[code]# Install the Exchange Online module if not already installed
Install-Module -Name ExchangeOnlineManagement

# Import the necessary modules
Import-Module ExchangeOnlineManagement

# connect to Exchange Online
Connect-ExchangeOnline

# Path to the .ics file
$icsFilePath = "C:\path\to\shared_calendar.ics"

# List of user email addresses
$userEmails = @(
    "email address removed for privacy reasons",
    "email address removed for privacy reasons",
    "email address removed for privacy reasons"
)

# Loop through each user and add the .ics calendar
foreach ($userEmail in $userEmails) {
    try {
        # Access the user's mailbox
        $mailbox = Get-Mailbox -Identity $userEmail

        if ($mailbox) {
            # Load the .ics file
            $icsContent = Get-Content -Path $icsFilePath -Raw

            # Add the .ics calendar to the user's mailbox
            Add-MailboxCalendarFolder -Identity $mailbox -Name "Shared Calendar" -Calendar $icsContent

            Write-Output "Successfully added calendar to $userEmail"
        } else {
            Write-Output "Mailbox not found for $userEmail"
        }
    } catch {
        Write-Output "Error adding calendar to $userEmail: $_"
    }
}

# Disconnect from Exchange Online
Disconnect-ExchangeOnline -Confirm:$false
[/code]

Cependant la commande "
Add-MailboxCalendarFolder" 
n'est plus valide avec la version que j'utilise.

Pourriez-vous m'aider  ?     

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 mois 1 semaine #34339 par Arnaud Petitjean
Bonjour Jean-Jacques,

Tout d'abord soit le bienvenu dans le forum. Je te remercie d'avance de bien vouloir te présenter car c'est toujours agréable de connaître un peu plus les membres que juste par des questions. ;-)

Je ne suis pas un expert Exchange, mais je vais essayer de t'aider.

Pourrais-tu nous dire quelles sont les versions que tu utilises ? D'après ce que tu expliques, la commande Add-MailboxCalendarFolder n'est plus disponible ? Si c'est le cas, elle a sûrement été remplacée par une autre... Bizarre...

Arnaud

 

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 mois 1 jour #34408 par Dead
Bonjour Jean-Jacques,

En adaptant un peu ce que j'avais fait dans ce script, peut être que cela pourra vous servir:
# Installer le module Exchange Online si non déjà installé
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

# Importer les modules nécessaires
Import-Module ExchangeOnlineManagement

# Se connecter à Exchange Online
Connect-ExchangeOnline -UserPrincipalName "youradmin@domain.com" -ShowProgress $true

# Chemin vers le fichier .ics
$icsFilePath = "C:\path\to\shared_calendar.ics"

# Liste des adresses e-mail des utilisateurs
$userEmails = @(
    "user1@domain.com",
    "user2@domain.com",
    "user3@domain.com"
)

# Charger le contenu du fichier .ics
$icsContent = Get-Content -Path $icsFilePath -Raw

# Convertir le contenu .ics en élément de calendrier
$calendarItem = [Microsoft.Exchange.WebServices.Data.Appointment]::Bind($service, $icsContent)

# Boucle à travers chaque utilisateur pour ajouter le calendrier .ics
foreach ($userEmail in $userEmails) {
    try {
        # Accéder à la boîte aux lettres de l'utilisateur
        $mailbox = Get-Mailbox -Identity $userEmail

        if ($mailbox) {
            # Définir un nom de dossier de calendrier unique
            $calendarFolderName = "Shared Calendar"

            # Créer le dossier de calendrier
            $calendarFolder = New-MailboxFolder -Mailbox $mailbox -Name $calendarFolderName -FolderType Calendar

            # Importer le fichier .ics dans le nouveau dossier de calendrier
            $importResults = Import-Calendar -Identity $mailbox -Content $icsContent -CalendarFolder $calendarFolder.Identity

            Write-Output "Calendrier ajouté avec succès à $userEmail"
        } else {
            Write-Output "Boîte aux lettres non trouvée pour $userEmail"
        }
    } catch {
        Write-Output "Erreur lors de l'ajout du calendrier à $userEmail : $_"
    }
}

# Se déconnecter de Exchange Online
Disconnect-ExchangeOnline -Confirm:$false

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.154 secondes
Propulsé par Kunena