PowerShell/Exchange

Aller à la navigation Aller à la recherche

Exemples de commandes PowerShell pour le serveur de messagerie Exchange.

Récupération d'informations

Récupération des alias d'adresse de messagerie par boite de messagerie ; à exécuter depuis le serveur de messagerie et la console PowerShell spécifique à Exchange "Exchange Management Shell" :

  • Get-Mailbox | Select -Expand emailaddresses alias | Export-csv -Path "c:\support\php-boite-20191226-1200.csv" -Delimiter ';'

Il est possible d'utiliser les commandes PowerShell du module Exchange en activant celles-ci dans la console standard de PowerShell, tout en étant sur le serveur de messagerie ! Cette commande est a activer à chaque nouvelle fenêtre de console PowerShell.

  • Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;

Boite de messagerie, accès total et envoyer en tant que

Commande PowerShell pour l'ajout d'un utilisateur pour les délégation d'"accès total" :

  • Add-MailboxPermission -Identity compteutilisateur -User comptedelégué -AccessRights FullAccess -InheritanceType All

Commande PowerShell pour l'ajout d'un utilisateur pour les délégation d'"envoi en tant que" :

  • Add-ADPermission -Identity compteutilisateur -User comptedelégué -ExtendedRights "Send As"

Liste des utilisateurs pour la boite :

  • Get-ADPermission -Identity compteutilisateur -user comptedelégué

Boite de messagerie et autorisation d'accès total

Pour autoriser l'accès à la boite de l'utilisateur compteutilisateur par l'utilisateur comptedelégué :

  • Add-MailboxPermission -Identity compteutilisateur -User comptedelégué -AccessRights FullAccess -InheritanceType All

Pour supprimer l'accès à la boite de l'utilisateur compteutilisateur par l'utilisateur comptedelégué :

  • Remove-MailboxPermission -Identity compteutilisateur -User comptedelégué -AccessRights FullAccess -InheritanceType All

Masquer l'adresse dans les listes Exchange

Pour masquer un utilisateur de la liste du carnet d'adresse :

  • Set-Mailbox -HiddenFromAddressListsEnabled $true -Identity compteutilisateur

Pour masquer tous les utilisateurs dont le compte est désactivé :

$BoiteListe = Get-User | Where {$_.UserAccountControl -like '*AccountDisabled*' -and $_.RecipientType -eq 'UserMailbox' } | Get-Mailbox  | Where {$_.HiddenFromAddressListsEnabled -eq $false}
Foreach ($Boite in $BoiteListe) { Set-Mailbox -HiddenFromAddressListsEnabled $true -Identity $Boite }

Réponse automatique

Ajout d'un message de réponse automatique ; source : https://docs.microsoft.com/en-us/powershell/module/exchange/set-mailboxautoreplyconfiguration?view=exchange-ps

Etat de l'option de réponse automatique :

$CompteAD = "dupondp"
Get-MailboxAutoReplyConfiguration -Identity $CompteAD

Désactivation de l'état de l'option de réponse automatique :

$CompteAD = "dupondp"
Set-MailboxAutoReplyConfiguration -Identity $CompteAD -AutoReplyState Disabled

Paramétrage de la réponse automatique, fin de mission ; même message pour les correspondants internes ou externes :

$CompteAD = "compteAD"
$Message = "<html><body>
<p>Bonjour.</p>
<p>J'ai terminé ma mission au sein de MaSociété. Désormais, merci de vous adresser à :</p>
<ul>
<li>Laurent Wagon, tél. +33 6 54 32 10 98, laurent.wagon@masociete.com</li>
</ul>
<p>Salutations.</p>
<p>Christophe Leconquérant</p>
</body></html>"
Set-MailboxAutoReplyConfiguration -Identity $CompteAD -AutoReplyState Enabled -InternalMessage $Message -ExternalMessage $Message

Paramétrage de la réponse automatique ; même message pour les correspondants internes ou externes :

$CompteAD = "dupondp"
$Message = "<html><body>
<p>Bonjour.</p>
<p>Je suis actuellement absent. Merci de transmettre vos mails aux adresses suivantes :</p>
<ul>
<li>Pierre Durant : p.durant@masociete.fr</li>
<li>Jean Bon : j.bon@masociete.fr</li>
</ul>
<p>Salutation</p>
<p>M. Dupond</p>
</body></html>"
Set-MailboxAutoReplyConfiguration -Identity $CompteAD -AutoReplyState Enabled -InternalMessage $Message -ExternalMessage $Message

Message différent en interne et en externe :

$CompteAD = "dupondp"
$MessageInterne = "<html><body>
<p>Bonjour.</p>
<p>Je suis actuellement absent pour plusieurs semaines.<br />Merci de créer un ticket GLPI pour toutes les demandes et incidents.</p>
<p>Salutations.</p>
<p>Dupond P.</p>
</body></html>"
$MessageExterne = "<html><body>
<p>Bonjour.</p>
<p>Je suis actuellement absent pour plusieurs semaines.<br />Merci de contacter M. Martin au 02 34 56 78 90.</p>
<p>Salutations.</p>
<p>Dupond P.</p>
</body></html>"
Set-MailboxAutoReplyConfiguration -Identity $CompteAD -AutoReplyState Enabled -InternalMessage $MessageInterne
Set-MailboxAutoReplyConfiguration -Identity $CompteAD -AutoReplyState Enabled -ExternalMessage $MessageExterne

Export PST

New-MailboxExportRequest -Mailbox lecompte -IncludeFolders "#notes#" -ExcludeDumpster -FilePath "\\phpexchange\c$\Temp\lecompte-20240502-1812.pst"
New-MailboxExportRequest -Mailbox lecompte -IncludeFolders "#Tasks#" -ExcludeDumpster -FilePath "\\phpexchange\c$\Temp\lecompte-20240502-1811.pst"

Création d'une signature pour tous les comptes

Création d'une signature au format HTML pour tous les comptes récupérés de l'AD.

Etape 1

# Import the active directory module which is needed for Get-ADUser
Import-Module activedirectory
# Set folder location for files, the folder must already exist
$save_location = 'c:\file_location\'
# $users = Get-ADUser -Filter * -Searchbase "OU=Test,OU=Direction,OU=Test Users,DC=mondomaine,DC=com" -Properties * -Credential mondomaine\admin -Server mondomaine.com
$users = Get-ADUser -Filter * -Searchbase "OU=Test,OU=Direction,OU=Test Users,DC=mondomaine,DC=com" -Properties *
foreach ($user in $users) {
  $full_name    = "$($user.GivenName) $($User.Surname)"
  $account_name = "$($User.sAMAccountName)"
  $job_title    = "$($User.title)"
  $location     = "$($User.office)"
  $dept         = "$($User.department)"
  $comp         = "$($User.company)"
  $email        = "$($User.emailaddress)"
  $phone        =  "$($User.telephoneNumber)"
  $logo         = "$($User.wWWHomePage)"
  # We need to construct and write the html signature file
  $output_file = $save_location + $account_name + ".htm"
  Write-Host "Now attempting to create signature html file for " $full_name
  "<span style=`"font-family: calibri,sans-serif;`"><strong>" + $full_name + "</strong><br />", $job_title + " - " + $location + "<br />", $dept + "<br />", $comp + "<br />", $phone + "<br />", "</span><br />", "<img alt=`"corporate logo`" border=`"0`" height=`"90`" src=`"" + $logo + "`" width=`"385`" />" | Out-File $output_file
}

Etape 2

# Set folder location for files, the folder must allready exist
$save_location = 'file_location'
$email_domain = '@mondomaine.com'
# connect to O365 tenant
$Cred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Cred -Authentication Basic –AllowRedirection
Import-PSSession $Session
# Get a list of all the filenames in the target folder
$sig_files = Get-ChildItem -Path $save_location
# Now push the html to the users signature
foreach ($item in $sig_files) {
  $user_name = $($item.Basename) + $email_domain
  $filename = $save_location + $($item.Basename) + ".htm"
  Write-Host "Now attempting to set signature for " $user_name
  set-mailboxmessageconfiguration -identity $user_name -signaturehtml (get-content $filename) -autoaddsignature $true 
}
# disconnect O365 connection
Get-PSSession | Remove-PSSession

Etape 3

set-mailboxmessageconfiguration -identity $user_name -signaturehtml (get-content $filename) -autoaddsignature $true

Liste de certaines propriétés d'un compte Exchange

Liste de certaintes propriétés d'un compte Exchange :

  • get-MailboxMessageConfiguration -Identity dupondj

Le résultat est :

RunspaceId                     : 16e07c9c-a804-12ba-83d1-93f297gb4413
AfterMoveOrDeleteBehavior      : OpenNextItem
NewItemNotification            : All
EmptyDeletedItemsOnLogoff      : False
AutoAddSignature               : False
AutoAddSignatureOnReply        : False
SignatureText                  :
SignatureHtml                  :
AutoAddSignatureOnMobile       : True
SignatureTextOnMobile          :
UseDefaultSignatureOnMobile    : True
DefaultFontName                : Calibri
DefaultFontSize                : 3
DefaultFontColor               : #000000
DefaultFontFlags               : Normal
AlwaysShowBcc                  : False
AlwaysShowFrom                 : False
DefaultFormat                  : Html
ReadReceiptResponse            : DoNotAutomaticallySend
PreviewMarkAsReadBehavior      : OnSelectionChange
PreviewMarkAsReadDelaytime     : 5
ConversationSortOrder          : ChronologicalNewestOnTop
ShowConversationAsTree         : False
HideDeletedItems               : False
SendAddressDefault             :
EmailComposeMode               : Inline
CheckForForgottenAttachments   : True
AreFlaggedItemsPinned          : False
IsReplyAllTheDefaultResponse   : True
KeyboardShortcutsMode          : Owa
LinkPreviewEnabled             : True
ShowPreviewTextInListView      : True
ShowUpNext                     : True
GlobalReadingPanePosition      : Right
IsFavoritesFolderTreeCollapsed : False
IsMailRootFolderTreeCollapsed  : False
MailFolderPaneExpanded         : True
IsHashtagTreeCollapsed         : False
IsGroupsTreeCollapsed          : False
GroupSuggestionDismissalCount  : 0
GroupSuggestionDismissalDate   :
ShowSenderOnTopInListView      : True
ShowReadingPaneOnFirstLoad     : False
NavigationPaneViewOption       : Default
AllOwaConfiguration            :
PreferAccessibleContent        : False
MailboxOwnerId                 : php.local/CAP/Dupond Jean
Identity                       : php.local/CAP/Dupond Jean
IsValid                        : True
ObjectState                    : Unchanged

Quelques commandes utiles

Liste propriétés d'une boite de messagerie :

  • Get-Mailbox -Identity "dupondj" | fl

Liste des boites qui ne sont pas affichées dans l'annuaire, avec tri sur la colonne "Alias" :

  • Get-Mailbox -ResultSize Unlimited -Filter {HiddenFromAddressListsEnabled -eq $True} | Sort-Object alias

Masquer une boite dans l'annuaire général d'Exchange : Set-Mailbox -Identity "dupondj" -HiddenFromAddressListsEnabled $True

Voir aussi

  •