DirPrep : Un script PowerShell pour préparer une migration depuis Lotus Notes

Microsoft vient de mettre à dispostion DirPrep est un script Powershell qui prépare à la migration d’un environnement Lotus Notes existant vers un environnement Active Directory.

Le processus DirPrep va automatiquement se charger de peupler dans l’AD tous les attributs liés aux fonctions de messagerie des comptes utilisateurs, il va également créer les comptes pour les boites partagées et les boites de groupe, il va provisionner des comptes pour les salles et les ressources, ainsi que pour les groupes qui devront migrer depuis l’environnement Lotus Notes.

Cliquez pour télécharger l’outil DirPrep : Directory Preparation for Lotus Notes Migrations.

Microsoft publie Office 365 Helper Scripts

Microsoft vient de mettre à disposition en téléchargement un package qui inclue une série de scripts PowerShell qui ont été créés et utilisés durant des déploiement d’Office 365.Ces différents scripts sont documentés dans un fichier Word qui les accompagne. Pour exécuter ces scripts il est nécessaire de disposer des droits “administrator-level” dans Office 365 et d’avoir installé PowerShell pour Office 365. Voici la liste des scripts :

  • Set-MsolUserPasswordFromCSV : permet de gérer les mots de passe depuis un fichier CSV
  • NewRandomPasswordFile : génère des mots de passe aléatoires et les stocke dans un fichier CSV
  • NewDirSyncPowerShellShortcut : vérifie l’installation de DirSync et crée un raccourci
  • GetTotalUsersGroupsContactsInForest : cherche dans Active Directory et calcule le nombre total d’utilisateurs, de groups et de contacts pour chaque domaine
  • GetSyncedObjectCount : retourne le nombre d’objets qui ont été synchronisés avec Office 365
  • GetMsolUserReport : génère un CSV qui contient des informations sur les utilisateurs et les boites aux lettres.
  • GetMsolTenantSkuUsage : génère un bilan d’usage des licences Office 365 dans un fichier CSV  
  • AssignLicenseByDG : permet d’assigner une licence en fonction de l’appartenance à un groupe de distribution

Vous pouvez télécharger ce package en cliquant sur le lien suivant : Package de scipts PowerShell pour Office 365

Pour en savoir plus sur la liste des Applets de commande Windows PowerShell pour Office 365 cliquez ici.

Pour obtenir des information sur les cmdlets PowerShell disponibles dans Exchange Online, suivez ce lien.

Liens utiles : Powershell pour Office 365

Quelles sont les possibilités d’administration et de paramétrage d’Office 365 via les lignes de commande PowerShell ?

Voici quelques liens qui pourront vous guider à ce sujet:

Lignes de commande pour l’administration: gestion de l’utilisateur, de l’authentification, des abonnements, licences, etc.

Guide de référence pour Exchange Online

Gestion des mots de passe: notamment pour l’expiration

[Office365] OWA – Créer signature HTML (avec Image)

Parmi les limitation d’Outlook Web Access, on trouvera l’impossibilité d’insérer une image dans sa signature.
En effet, la gestion des signatures dans OWA ne permet pas d’insérer une image (logo d’entreprise par exemple) :

UI_Sign
(Cliquer pour agrandir)

Dans le cas ou un utilisateur doit envoyer un mail via l’interface web, il est plus agréable d’avoir une signature standard plutôt que du texte brut, voir pas de signature du tout…

Il existe une solution pour passer au delà de ce problème.Un script PowerShell peut être utilisé pour appliquer une signature à un utilisateur quand il utilise OWA.
Pour ce faire, il faudra :

  1. Un compte Office 365 sur lequel appliquer la signature;
  2. Un compte Admin pour pouvoir exécuter les commandes.

Dans un premier temps, il faut créer la signature au format HTM/HTML selon la modèle souhaité.
Pour insérer une image, il faut que celle-ci soit hébergée sur internet, et c’est là que c’est important. Il faut que l’image soit accessible sur internet.
Ensuite, dans une console PowerShell connectée à Office 365, saisir les commandes suivantes :

$file = "[URL_SIGN]"

$temp = Get-Content Path $file ReadCount 0
Set-MailboxMessageConfiguration identity [ACCOUNT] SignatureHtml $temp

[URL_SIGN] : Correspond au chemin du fichier HTM sur l’ordinateur
[ACCOUNT] : Correspond au compte sur lequel appliquer la signature

Voilà ce que cela donne

Sign_Final
(cliquer pour agrandir)

Inconvénients :

  • L’utilisateur ne peut pas mettre en place cette procédure seul;
  • Lors de la réception de mails, il est possible que l’image soit bloquée par sécurité. Pour que cette alerte n’apparaisse plus, il faut ajouter le domaine à la liste des expéditeurs approuvés en cliquant sur l’alerte.

Sign_Warning
Sign_Warning2
(cliquer pour agrandir)

En revanche, cela convient parfaitement lors de la création de la messagerie par le service adéquate au sein d’une société. Ainsi, il est possible d’appliquer le même modèle de signature pour tout le monde.

P.S. : Il est aussi possible de passer par le “Presse Papier” pour intégrer une image via OWA directement, mais il n’est pas évident de gérer l’emplacement de celle-ci via cette méthode.

Jimmy.
(Billet d’origine : http://www.overthecloud.fr/?p=93)

Configurer les stratégies de mot de passe des utilisateurs

En tant qu’administrateur global de Microsoft Office 365, vous pouvez vous servir de PowerShell pour configurer les stratégies de mot de passe des utilisateurs de sorte que ceux-ci n’arrivent jamais à expiration. Vous pouvez également utiliser l’applet de commande Windows PowerShell pour supprimer la stratégie « n’expire jamais » ou pour déterminer si les mots de passe des utilisateurs sont configurés de manière à ne jamais arriver à expiration.

Remarque : Seuls les mots de passe des comptes d’utilisateur qui ne sont pas synchronisés via la synchronisation d’annuaires peuvent être configurés de manière à ne jamais expirer.

Déterminer si un mot de passe est configuré pour ne jamais arriver à expiration

  1. Connectez-vous à Windows PowerShell à l’aide des informations d’identification de l’administrateur de votre société.

  2. Effectuez l’une des opérations suivantes :

    • Pour déterminer si le mot de passe d’un utilisateur unique est configuré pour ne jamais arriver à expiration, exécutez l’applet de commande suivante en utilisant le nom d’utilisateur principal (UPN) (par exemple, aprilr@contoso.onmicrosoft.com) ou l’Identifiant utilisateur de l’utilisateur à vérifier :
      Get-MSOLUser -UserPrincipalName <Identifiant utilisateur> | Select PasswordNeverExpires
    • Pour voir le paramètre « mot de passe n’expire jamais » de tous les utilisateurs, exécutez l’applet de commande suivante :
      Get-MSOLUser | Select UserPrincipalName, PasswordNeverExpires

Définir un mot de passe pour qu’il n’arrive jamais à expiration

  1. Connectez-vous à Windows PowerShell à l’aide des informations d’identification de l’administrateur de votre société.

  2. Effectuez l’une des opérations suivantes :

    • Pour définir le mot de passe d’un utilisateur pour qu’il n’arrive jamais à expiration, exécutez l’applet de commande suivante en utilisant le nom d’utilisateur principal (UPN) ou l’Identifiant utilisateur de l’utilisateur :
      Set-MsolUser -UserPrincipalName <Identifiant utilisateur> -PasswordNeverExpires $true
    • Pour définir les mots de passe de tous les utilisateurs pour qu’ils n’arrivent jamais à expiration, exécutez l’applet de commande suivante :
      Get-MSOLUser | Set-MsolUser -PasswordNeverExpires $true

Définir un mot de passe pour qu’il arrive à expiration

  1. Connectez-vous à Windows PowerShell à l’aide des informations d’identification de l’administrateur de votre société.

  2. Effectuez l’une des opérations suivantes :

    • Pour définir le mot de passe d’un utilisateur pour qu’il arrive à expiration, exécutez l’applet de commande suivante en utilisant le nom d’utilisateur principal (UPN) ou l’Identifiant utilisateur de l’utilisateur :
      Set-MsolUser -UserPrincipalName <Identifiant utilisateur> -PasswordNeverExpires $false
    • Pour définir les mots de passe de tous les utilisateurs pour qu’ils arrivent à expiration, exécutez l’applet de commande suivante :
      Get-MSOLUser | Set-MsolUser -PasswordNeverExpires $false

[Office365] Gestion des licences en PowerShell

Un lot de nouvelles commandes PowerShell est disponible depuis peu permettant de gérer les tenants Office365.
Ces commandes sont disponibles à l’adresse suivante : http://onlinehelp.microsoft.com/en-us/office365-enterprises/hh125002.aspx.

Toutes les commandes ne sont pas encore fonctionnelles
Bon, celles que nous allons voir le sont toutes, alors pas de soucis =)

Au long de ce billet, vous aurez besoin de saisir différentes entrées qui changeront selon vos utilisateurs, Packs…

[PACK TYPE] pour Le pack qui sera utilisé lors de l’attribution des licences
[SERVICE PLAN] pour les services qui seront désactivés
[ACCOUNTSKUID] pour choisir sur quel plan se baser pour l’attribution des ServicePlan
[USR UPN] pour les adresses mails d’utilisateurs sur lesquels vous allez travailler

Il y a quatre commandes qui permettent de gérer les licences et de les attribuer aux utilisateurs.

1 – Get-MsolSubscription

La première permet de connaitre les plans actifs sur votre tenant.

#Affichage des pack actifs sur le tenant avec les informations liées 
Get-MsolSubscription | fl

Voilà ce que retourne la commande.

ScreenHunter_01 May. 25 12.00

L’information qui sera utilisée plus loin est le SkuPartNumber. Pensez à conserver ces SkuPartNumber pour la suite. Il sera désigné comme [PACK TYPE].

2 – Get-MsolAccountSku

Cette commande permet de connaitre l’état des licences sur chacun des packs…

ScreenHunter_02 May. 25 12.07

L’information qui sera utilisée plus loin est le AccountSkuId. Pensez à conserver ces AccountSkuId pour la suite. Il sera désigné comme [ACCOUNTSKUID].

… mais pas que =)

Elle permet aussi de connaitre les services liés à un Pack.
Utilisez le code suivant pour connaitre le détail du pack désiré :

#Variable qui sera utilisée pour trouver les différents Plan
$SStatus = Get-MsolAccountSku | where {$_.SkuPartNumber -eq "[PACK TYPE]"}

#Affichage des différents services du plan
$SStatus.ServiceStatus

Voilà ce que retourne la commande.

ScreenHunter_04 May. 25 12.48

Vous allez avoir besoin de ces ServicePlan afin de créer vos packs personnalisés. Ils seront désignés comme [SERVICE PLAN].

Dans le cas d’un plan E3 :
OFFICESUBSCRIPTION correspond à Office 2010 Pro Plus
MCOSTANDARD correspond à Lync Online
SHAREPOINTWAC correspond aux Office Web Apps
SHAREPOINTENTERPRISE correspond à SharePoint Online
EXCHANGE_S_ENTERPRISE correspond à Exchange Online

Maintenant il faut passer à la création du nouveau Pack.

3 – New-MsolLicenseOptions

#Création de la variable qui sera utilisée lors de l’attribution
$DisableSStatus = New-MsolLicenseOptions -AccountSkuId [ACCOUNTSKUID] -DisabledPlans [SERVICE PLAN]

#Affichage du contenu de la commande
$DisableSStatus

Voilà ce que retourne la commande.

ScreenHunter_09 May. 24 16.39

 

Information Symbol

Soit je ne maitrise pas la cmdlet, soit cela ne créé pas de pack de manière définitive.
En effet, après exécution de la commande, je n’ai pas de nouveau Pack dans la liste. C’est pourquoi j’enregistre la commande dans une variable que je vais utiliser plus tard.

4 – Set-MsolUserLicense

Afin d’attribuer un pack modifié à un utilisateur, utilisez le code suivant comme modèle selon ce que vous souhaitez activer ou non :

#Attribution du pack ENTERPRISEPACK en retirant la licence Office Pro Plus comme indiqué plus haut.
Set-MsolUserLicense -UserPrincipalName [USR UPN] -LicenseOptions $DisableSStatus

Vous pouvez maintenant aller vérifier les différents ServicePlan de vos utilisateurs.

ScreenHunter_03 May. 25 12.45

Tout ça nous change bien de BPOS. C’est un grand pas en avant, et je vous laisse aussi imaginer comment industrialiser ça afin de rendre la création et l’activation de vos utilisateurs plus facile.

Billet d’origine.

[Tips Office 365] Se connecter à Exchange Online en Remote PowerShell

Comme avec BPOS, il est possible de faire du remote Remote Powershell avec Office365.
A la différence près qu’il est possible de se connecter au cloud avec la la console powershell de base. Il n’est plus necessaire de télécharger les outils de migration pour executer nos commandes à distance.

Les prérequis

  • PowerShell v2 (De base sous Win7 et Win2008 R2)
  • Windows Remote Management (WinRM) 2.0 (De base sous Win7 et Win2008 R2)

Le tout étant disponible ici si vous êtes encore sous XP

Se connecter

Bref, voilà comment se connecter et même comment récuperer la liste des commandes PS disponible !

Commande de base pour saisir les identifiants (Jusque là, pas de changement)

$cred = Get-Credential

Connecting_PS_1

Chaine de connexion

$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $cred -Authentication Basic –AllowRedirection

Connecting_PS_2

Ouverture de la session

$importresults = Import-PSSession $s

Connecting_PS_3

Vous êtes maintenant connectés.

Liste des commandes disponibles

Maintenant, pour avoir la liste des commandes disponibles, il vous suffit de taper la commande ci-dessous.

Get-Command -Module $importresults | Out-Host -Paging

Connecting_PS_4

BPOS – Sauvegarde et restauration de mails

Bien que la solution proposée par Microsoft soit apparemment vraiment fiable, il n’en est pas moins que rien n’est infaillible et les DSI ne voient pas leurs sauvegardes exécutée uniquement sur les serveurs de Microsoft d’un très bon œil (Ne me répondez pas que les sauvegardes peuvent se faire directement via Outlook avec l’archivage, je ne fait pas confiance à mes utilisateurs [;)].
Donc avec un peu de PowerShell, on peut facilement automatiser une sauvegarde.

SAUVEGARDE

Les commandes utilisées pour la sauvegarde seront Get-xsHostedExchangeMailboxData ainsi que export-transporterbinary.

Dans la commande Get-xsHostedExchangeMailboxData, vous  pouvez définir une fourchette de date pour choisir de quand à quand le dump des mails doit être fait. Pour cela utiliser les paramètres  -EmailEnd et -EmailStart. Mais dans le cas ou un administrateur veut planifier ses sauvegardes, ce système n’est pas très performant, il faut un système plus souple. Par exemple un calcul de date [:)]. Rien de plus simple, par exemple, pour sauvegarder les sept derniers jours, nous auront besoin de la date actuelle ainsi que celle d’il y a sept jours (donc –7) :

$DayToExport=[system.DateTime]::Now.Adddays(-7)
$Today=[system.DateTime]::Now

Idéalement, il faudrait faire une sauvegarde journalière (qui peut être supprimée après une semaine ou deux), une hebdomadaire (qui peut être supprimé tous les mois ou deux mois) puis une mensuelle (qui peut être supprimée tous les ans).

Donc voilà comment est composée la commande :

Get-XsHostedExchangeMailboxdata -EmailEnd $Today -EmailStart $DayToExport -sourceserver "red002.mail.emea.microsoftonline.com" -sourcelocation "https://red002.mail.emea.microsoftonline.com/exchange" -sourceidentity xcessiv@overthecloud.emea.microsoftonline.com | export-transporterbinary -targetfilepath c:\ExportMail -targetfileprefix "Sauvegarde"

Get-XsHostedExchangeMailboxData1

Ce script vous créé donc un fichier TBIN nommé “Sauvegarde” suivi de la date de la sauvegarde (sauf pour le premier fichier, qui lui se nommera seulement Sauvegarde.tbin) dans le dossier désiré (partage, dossier local…), ici c:\ExportMail.
Vous l’aurez compris, –SourceIdentity représente le compte à sauvegarder, –SourceServer et –SourceLocation sont les serveurs BPOS.
A savoir : Le fichier généré est inutilisable en dehors de BPOS… [:(]

On peut imaginer un script qui, avec une liste d’utilisateurs, personnaliser le nom des sauvegardes ainsi que leurs destinations, une planification des sauvegardes qui gère automatiquement le type de sauvegarde (sauvegarde différentielle ou complète), ou pour les comptes critiques une sauvegarde beaucoup plus régulière…

RESTAURATION

Bon, maintenant que nos sauvegardes sont faites, il faut penser à la méthode de restauration. Pour cela il faut se poser une question :

Est-ce une restauration complète ou simplement un (ou plusieurs) mail(s) précis à restaurer ?

En effet, l’import du fichier TBIN se fait en une fois, cela signifie que nous ne pouvons pas choisir les mails/dossiers à restaurer. Donc dans le cas d’une restauration de boite complète, cela ne pose pas de soucis, mais s’il faut restaurer moins que la totalité des mails, il faudra faire autrement.
La solution ici précisément, est d’utiliser une boite temporaire dans laquelle tout restaurer, puis de mettre une délégation à l’utilisateur pour qu’il récupère tout ce qu’il souhaite avant de supprimer la boite temporaire.

Les commandes à utiliser seront Import-TransporterBinary et Add-XsExchangeOnlineItem.

Import-TransporterBinary -Sourcefilename “C:\ExportMail\Sauvegarde.tbin” | Add-XsExchangeOnlineItem -identity xcessiv@overthecloud.emea.microsoftonline.com

Le paramètre-SourceFilename représente la localisation du fichier de sauvegarde
Le paramètre –Identity représente le compte sur lequel restaurer les mails. Comme dit plus haut, cela peut être la boite mail de l’utilisateur concerné ou une boite temporaire créée spécialement pour l’occasion sur laquelle on mettra des délégation afin que l’utilisateur puisse récupérer les mails de son choix.

Voilà qui est fait. Si vous avez d’autres solutions plus simples ou plus chères, je suis à votre écoute [:)]

BPOS – Supprimer un mail donné dans toutes les boites mails

Il vous est certainement déjà arrivé d’envoyer un mail qui n’aurait pas du être envoyé (oubli de pièces jointes, modifications, mauvaises blagues ou autre…) et de vouloir au final annuler cet envoi, mais trop tard.
Ou en tant qu’administrateur, un de vos supérieur (tout affolé, les bras levés vers le ciel) viens vous voir en vous demandant de supprimer le mail qui a été envoyé à toute la société contenant la liste des payes ou un employé qui lâche une bombe par mail avant son départ…

MessageOps a mis en ligne hier un script permettant de checker une a une toutes les boites mail de l’entreprise en recherchant un mail avec un sujet donné et en cas de résultat positif, de le supprimer.

Vous trouverez leur billet (en anglais) à ce lien :
http://www.messageops.com/deleting-a-message-from-all-mailboxes-in-exchange-online
Et le script à ce lien :
http://www.messageops.com/downloads/DeletebySubjectLast4hours.zip

Par défaut et par sécurité, ce script fonctionne en mode Test. C’est à dire qu’il ne check qu’une boite mail. Si vous venez à vouloir l’utiliser, vérifier plusieurs fois avant de l’exécuter (histoire d’éviter de vider les boites mail de toute votre entreprise [:)].

En pré-requis, vous aurez besoin d’EWS (Exchange Web Services Managed API) sur votre machine disponible sur le site de Microsoft.

Source : OverTheCloud

Utiliser Powershell pour obtenir un rapport d’activité des comptes Microsoft Exchange Online (BPOS)

Microsoft Online Services dispose d’une interface web pour l’administration et la gestion des comptes utilisateurs, mais cette interface est très simple et ne permet pas d’obtenir de rapport détaillé sur l’activité des utilisateurs (taux d’occupation de chaque BAL, nombre de messages stockés, etc.).

Pour palier ce manque, il faut se tourner vers PowerShell et commencer par télécharger la version de l’outil Microsoft Transporter qui correspond à votre environnement de travail x86 ou x64 et l’installer sur une station de travail.

Après l’installation de cet outil, aller dans le menu Démarrer, Microsoft Online Services, Migration et lancer l’interface de commande de migration.

Une fois dans l’invite de commande, taper les instructions suivantes :

$cred = Get-Credential

L’instruction $cred = Get-Credential affiche une fenêtre dans lequelle il faut saisir le nom d’un compte disposant des droits d’administration du service BPOS.

Get-MSOnlineUser -Enable -Credential $cred | ft Identity, IsActive, LastSignedDate, ItemCount, UsedMailboxSize, MailboxSize

Les informations retournées dans les différentes colonnes sont les suivantes :

  • IsActive : boîte aux lettres est active/inactive
  • LastSignedDate : date de la  dernière connexion de l’utilisateur à sa boîte aux lettres
  • ItemCount : nombre d’éléments dans la boîte aux lettres
  • UsedMailboxSize : utilisation de la boîte aux lettres
  • MailBoxSize : capacité maximum de la boîte aux lettres

Il est bien entendu possible d’utiliser ces commandes Powershell pour créer un fichier de rapport.