Sylver SCHORGEN Blog's

Articles, astuces et news sur les technologies Microsoft et plus particulièrement tournant autour de Powershell
    • 22/10/2016

    [DIVERS] Informations à fournir lors d'une migration de Messagerie On-Prem vers Exchange Online

    Hello tout le monde,

     

    J'ai réalisé pas mal de migrations de messagerie On-Prem (Exchange et principalement non Exchange) vers Office 365 depuis ces 2-3 dernières années et j'ai également répondu à des d'appels d'offres traitant de ce sujet (ou il fallait chiffrer la prestation mais également les licences du produit de migration et les licences Office 365). Voici un petit retour d'expérience sur quelques informations qu'il faut fournir (notamment dans l'appel d'offres) et qui sont bien souvent manquantes (pour une partie d'entre elles) :

    • Le logiciel de messagerie utilisé : Il est important de fournir le logiciel de messagerie utilisé ainsi que sa version.
    • Le type de connexion Internet et le débit : En Nouvelle-Calédonie, nous avons un Internet qui n'est pas aussi rapide qu'en Europe ou en Amérique de Nord (surtout en Upload, on est souvent limité à 1Mo si on est abonné ADSL. Il est possible d'avoir plus si on dispose d'une LS ou du RFIP). Il est donc important de fournir cette information nous permettant d'estimer les temps de migration.
    • Le nombre de BAL : Bien souvent le nombre d'utilisateurs et fournis mais pas le nombre de BAL (boîtes aux lettres). Il est important de connaître le nombre de BAL individuelles et partagées exactes qu'il faudra migrer (les BAL partagées sont souvent oubliées).
    • Utilisation ou non de liste de distribution et si oui combien : Cela nous permet de savoir s'il faudra en recréer et combien il faudra en recréer (cette tâche étant normalement scriptée à l'aide d'un fichier d'entrée contenant les listes à créer ainsi que leurs membres).
    • Utilisation des ressources (salles de réunions, véhicules, ...) et si oui combien : Ceci est souvent utile pour les licences du produit de migration (pour les solutions de messagerie On-Prem non Microsoft type Lotus par exemple que l'on migre vers Office 365). En effet, les produits de migration imposent souvent l'achat d'une licence pour chaque ressource que nous migrons (je parle pour les produits de migration que j'ai pu utiliser, je ne les connais bien entendu pas tous).
    • La volumétrie globale des BAL actives : Ceci permettra d'estimer le temps global de migration (en fonction du débit mais aussi des limitations Microsoft --> https://technet.microsoft.com/en-us/library/dn592150(v=exchg.150).aspx).
    • La volumétrie moyenne d'une BAL
    • Est-ce qu'il y a des archives à migrer : Les archives sont souvents oubliés dans les appels d'offres. Il est important d'indiquer s'il y a des archives, si celles-ci doivent être migrées. Il est également important d'indiquer si elles sont sur le serveur ou sur les postes utilisateurs.
    • S'il y a des archives, la volumétrie globale des archives : Ceci permettra d'estimer le temps global de migration (en fonction du débit mais aussi des limitations Microsoft --> https://technet.microsoft.com/en-us/library/dn592150(v=exchg.150).aspx).
    • S'il y a des archives et que ce paramètre est connu, la volumétrie moyenne d'une archive
    • Quelle est la stratégie de reprise des données : Est-ce que l'intégralité des mails doivent être migrés pour chaque BAL ou ne migrons-nous que les 6 derniers mois ou la dernière année ou les 2 dernières années ? Que faisons-nous des archives (les mettre sur les postes uniquement ou les envoyer dans l'archive online) ?
    • Y a t'il des dossiers publics (ou technologie équivalente sur d'autre technologie non Microsoft) : S'il y en a préciser la volumétrie.
    • Quelle stratégie de migration voulez-vous utiliser : Si vous savez déjà comment vous voulez migrer, indiquez le (migration "big bang", cohabitation, ...). En cas de cohabitation, indiquez si vous voulez que les 2 systèmes se "voient" (est-ce que les personnes de "l'ancien système" doivent pouvoir voir les disponibilités du calendrier de ceux présents sur le nouveau système, ...).
    • Faut-il synchroniser l'Active Directory local de l'entreprise avec Office 365 : Ceci est une information importante permettant de connaître la stratégie de gestion des utilisateurs et qui influt sur l'architecture à mettre en place (mise en place d'un serveur supplémentaire pour la synchronisation). Il est faut également préciser si la synchronisation des mots de passe doit être mise en place ou non.
    • Est-ce qu'il faut mettre en place du SSO : Le SSO permettra aux utilisateurs de ne pas avoir à retaper leur mot de passe lorsqu'ils sont authentifiés sur leur session Windows de domaine. Ce paramètre va influer sur l'architecture à mettre en place (plusieurs serveurs supplémentaires devront être configurés).
    • Y a t'il des équipements ou logiciels qui utilisent le SMTP On-Premise pour envoyer des mails : Les copieurs fournissent la possibilité de "Scan To Mail" et beaucoup d'applications envoient automatiquement des emails. Si c'est le cas, il faudra mettre en place et configurer un relais SMTP.

     

    Le fait de connaître les volumétries nous permet d'estimer les temps d'upload des BAL actives et des archives dans le cloud et la taille moyenne d'une BAL active / archive nous permttra de réaliser un planning de migration en fonction de la volumétrie migrable par journée de migration (souvent nuit et week-end de migration pour ne pas impacter les utilisateurs en journées).

    Bien entendu, pas mal de ces questions peuvent être discutées avec le prestataire afin qu'il vous fournisse la solution la plus adaptée à votre besoin et votre contexte et qu'il vous conseille si vos choix ne sont pas arrêtés (sur la reprise de données ou la migration des archives par exemple).

     

    N'hésitez pas à commenter ou donner vos retours d'expérience :)

    • 19/10/2016

    [PowerShell] Outil de déploiement ADDS

    Bonjour tout le monde,

     

    Comme je monte pas mal d'AD en ce moment (pour des labs ou des clients), je me suis fait des petits scripts PowerShell pour me faciliter la vie. Récemment, j'y ai même ajouté un interface graphique afin de directement modifier les valeurs de mes variables par le biais de cette interface.

    Tout a été intégralement codé en PowerShell avec PowerShell Studio.

     

    Cet outil est composé de deux onglets. Le premier permet de configurer le nom du serveur, son IP, son préfixe réseau, sa gateway et son ou ses serveurs DNS (séparés par des virgules). Une fois toutes les informations renseignées, vous pourrez cliquer sur le bouton Configure Server.

     

     

    Le second onglet permet de déployer la fonctionnalité ADDS ainsi qu'une nouvelle forêt. Vous pouvez alors renseigner le nom de domaine, le nom NETBIOS, le niveau fonctionnel du domaine (WIN2003 à WIN2016), de la forêt (WIN2003 à 2016) et votre Safemode Password. Une fois toutes les informations renseignées, vous pourrez cliquer sur le bouton Deploy ADDS.

     

    Vous pouvez télécharger le code source PowerShell ainsi que le projet PowerShell Studio ici --> http://bit.ly/2eT4CIf 

    Vous trouverez également joint à ce poste, une archive contenant l'exécutable.

     

    Dans le futur, d'autres onglets seront ajoutés pour, par exemple, ajouter un contrôleur de domaine à un domaine existant, déplacer les rôles, ...

    N'hésitez pas à me faire des retours sur votre utilisation, les éventuels bugs ou autre :)

     

    Attention : Cette application est fournie gratuitement sans aucune garantie ou sans aucun support.

    • 23/8/2016

    [Pester] Install Pester on Windows 10

    It's been a while since I wanted to test Pester and I finally find the time to test it. Pester is a BDD (Behaviour-Driven Development) based test runner for PowerShell (https://github.com/pester/Pester/wiki/Pester). We want to use this kind of tool when we want to verify that the result of a PowerShell function is really what we are waiting for. It is useful when we are modifying code we want to assure that the result is still the same.

    To install Pester, enter the following command : Install-Module -Name Pester

    To verify Pester has been correctly installed : Get-Module -ListAvailable -Name Pester

    To import Pester : Import-Module -Name Pester

    In my next article, I will explain a simple case study !

    • 23/8/2016

    [Pester] Installer Pester sur Windows 10

    Cela fait un moment que je me dis qu'il va falloir que je me mette à utiliser Pester. Pester est un framework de test unitaire pour PowerShell. Il va donc nous permettre de valider que le résultat d'une fonction est bien ce à quoi nous nous attendons. C'est très utile notamment lorsque nous modifions nos scripts ;)

    Pour installer Pester sur Windows 10, entrer la commande suivante : Install-Module -Name Pester

    Pour vérifier que le module est bien installé : Get-Module -ListAvailable -Name Pester

    Pour importer Pester : Import-Module -Name Pester

    Dans un prochain article, je détaillerai un exemple simple d'utilisation de Pester !

    • 21/8/2016

    [AZURE AUTOMATION] Stopper les VMs Azure tous les soirs

    Hello tout le monde,

    Aujourd'hui j'ai décidé de faire un petit post sur Azure Automation. Comme beaucoup de personnes, il m'est (trop) souvent arrivé d'oublier d'éteindre mes VMs Azure à la fin de test et de (trop vite) me retrouver avec tout mon crédit MSDN consommé ...

    J'ai donc mis en place dernièrement un script PowerShell qui éteint les VMs Azure démarrées tous les soirs. Quoi de mieux pour cela qu'Azure Automation.

    1/ CRÉER UN COMPTE AUTOMATION

    Si ce n'est pas déjà fait, créez-vous un compte Azure Automation.

    2/ AJOUTER UN NOUVEAU RUNBOOK

    Une fois votre compte créé, il vous faut ajouter un nouveau runbook. Vous avez normalement 4 runbooks par défaut qui ont été déployés lorsque vous avez créé votre compte Azure Automation. Vous pouvez les supprimer.

    Créez un nouveau Runbook de type PowerShell.

    Utilisez le script Stop-AureVM sur mon Github pour ce runbook. Ce dernier permet d'arrêter toutes les VMs encore en statut "Running". Une fois ceci effectué, cliquez sur "Enregistrer" puis sur "Publier".

     

    3/ TESTER VOTRE SCRIPT

    Maintenant que vous avez ajouté votre script, exécutez-le afin de valider qu'il stoppe bien toutes vos VMs (il faut bien entendu que vous ayez des VMs d'allumées). Pour cela, cliquez sur le bouton "Démarrer".

    La sortie de l'exécution doit vous afficher la liste de toutes les VMs que le script a éteint.

    3/ PLANIFIER L'EXÉCUTION

    Il nous faut maintenant ajouter une planification à notre runbook afin que ce dernier s'exécute automatiquement tous les soirs (à 23h00 dans mon cas).

    Pour ce faire, cliquez sur Planifications puis sur Ajouter une planification puis sur Associer une planification à votre runbook.

    Au niveau de votre planification, donnez-lui un nom, choisissez une heure et une périodicité (23h00 tous les jours dans mon cas).

    Toutes vos VMs s'arrêteront automatiquement tous les soirs à 23h si vous avez oublié de les éteindre.

    • 14/7/2016

    [OUTIL] Réinitialiser un compte AD

    Bonjour tout le monde,

    Voici un petit post sur un outil que j'ai créé qui permet d'effectuer les tâches suivantes sur un compte AD :

    • Réinitialiser le mot de passe d'un compte AD
    • Demander à l'utilisateur de changer son mot de passe à la prochaine connexion
    • Activer / Désactiver un compte AD
    • Déverrouiller un compte AD
    • Assigner un date d'expiration à un compte AD

    Afin de pouvoir exécuter cet outil, il faut être connecté sur un PC de domaine avec un compte AD ayant le droit d'effectuer toutes ces actions. Ce PC n'a pas besoin d'être un contrôleur de domaine. L'application récupérera automatiquement le module AD depuis un DC et le chargera sur votre ordinateur. Afin de pouvoir effectuer cela, il faut que le PSRemoting soit activé. Ce module étant chargé avant l'ouverture de l'application et cette action pouvant prendre quelques secondes, il est possible que l'application mette 5-10s à s'ouvrir.

    Une fois ceci effectué, entrez le nom ou le prénom de l'utilisateur (ou les 2 :P) dans la zone "Utilisateur" puis cliquez  sur "Valider" afin de rechercher votre utilisateur. Si plusieurs utilisateurs ayant le même prénom ou nom existent, la drop down list sera remplie avec tous les comptes AD.

    Après avoir sélectionné votre compte, vous pouvez choisir l'action (ou les actions) que vous voulez effectuer.

    N'hésitez pas à me remonter d'éventuelles améliorations / bugs ou autre concernant cet outil :) Je le joins à la fin de ce post sous la forme d'un fichier zip.

    Cet outil a été réalisé en PowerShell avec PowerShell Studio !

    Attention : Cette application est fournie gratuitement sans aucune garantie ou sans aucun support.

    • 12/7/2016

    [PowerShell] Récupérer la liste des utilisateurs n'ayant pas de licences Office 365

     J'ai récemment réalisé un script PowerShell permettant d'exporter vers un fichier CSV la liste de tous les utilisateurs Office 365 n'ayant pas de licences.

    Les paramètres obligatoires :

    • $CSVFilePath : Paramètre non obligatoire au niveau duquel vous devez indiquer le chemin du fichier CSV dans lequel sera stocké la liste de tous les utilisateurs n'ayant pas de licences. Par défaut, ce document sera sauvegardé sur le bureau si vous ne spécifiez aucune valeur.
    • $O365AdminLogin : Paramètre obligatoire au niveau duquel vous devez renseigner le login d'un utilisateur administrateur Office 365.
    • $O365AdminPassword : Paramètre obligatoire au niveau duquel vous devez renseigner le mot de passe de votre utilisateur administrateur Office 365.

    Un exemple d'utilisation : .\O365_Get-UnlicensedUsers.ps1 -CSVFilePath "C:\_\unlicensed_users.csv" -O365AdminLogin "admin@domain.com" -O365AdminPassword "XXXXYYYY"

     Le résultat du fichier CSV :

    Pour télécharger le script, c'est par ici : https://github.com/sschorgen/PowerShell/blob/master/O365_Get-UnlicensedUsers/O365_Get-UnlicensedUsers.ps1

    • 15/6/2016

    [PowerShell] Déléguer le contrôle total sur une BAL Office 365

     Lorsque vous voulez donner le droit "Full Control" à votre administrateur (ou un autre utilisateur) sur une boîte aux lettres Exchange Online (ou Exchange), vous pouvez soit passer par l'interface web existante, soit utiliser PowerShell (ce que je préfère lorsqu'il y a 200 compte à configurer ;) ).

    Voici la commande permettant de déléguer le contrôle total d'une boîte à un utilisateur : Add-MailboxPermission -Identity "utilisateur@domaine.com" -User "utilisateur_a_qui_vous_donnez_le_droit@domaine.com" -AccessRights FullAccess -Confirm:$False

    Dans cette commande :

    • Utilisateur@domaine.com : Correspond à la boîte sur laquelle vous allez donner la délégation
    • Utilisateur_a_qui_vous_donnez_le_droit@domaine.com : Correspond au compte à qui vous voulez donner le droit "Full Control"

    • 7/5/2016

    [PowerShell] Office 365 - Désactiver la stratégie de rétention par défaut

    Lors d'un projet de migration vers Office 365, mon client m'a demandé de désactiver la rétention par défaut pour certaines boîtes aux lettres (plusieurs 10aines de BAL fournies dans un fichiers CSV).

    Voici la commande PowerShell à utiliser pour effectuer cette action : Set-Mailbox -Identity "votre_utilisateur@domaine.com" -RetentionPolicy $null

    • 5/4/2016

    [Office 365] Désactiver la fonctionnalité Courrier Pêle-Mêle

     Bonjour tout le monde,


    Un petit post rapide ce matin pour vous indiquer comment, en tant qu'administrateur Office 365, vous pouvez désactiver la fonctionnalité de boîte aux lettres nommée "Courrier pêle-mêle" (ou "Clutter" en anglais) pour un utilisateur en particulier ou pour tous les utilisateurs.

    Pour désactiver la fonctionnalité pour un utilisateur en particulier : Set-Clutter -Identity "your_user@domain.com" -Enable $False

    Pour désactiver la fonctionnalité pour tous les utilisateurs : Get-Mailbox | Set-Clutter -Enable $False

    Si vous voulez réactiver la fonctionnalité "Courrier pêle-mêle" pour un utilisateur en particulier ou pour tous les utilisateurs, remplacer la valeur $False du paramètre Enable par la valeur $True


    • 25/3/2016

    [Office 365] Guides Vidéos Officiels

    Bonjour tout le monde,

    Juste une petite information aujourd'hui : Microsoft à mise en place un site au niveau duquel plusieurs guides vidéos Office 365 ont été publiés. Tous les guides sont en anglais. Pour y accéder, c'est par ici : http://bit.ly/1q4YH4e

    • 21/3/2016

    [PowerShell] Afficher toutes les BAL de type salles cachées de la GAL

    Il y a quelques jours je postais un script cachant toutes les BAL de type "salle" de la GAL. Voici maintenant son opposé, un script permettant de rendre disponible à tous les utilisateurs les BAL de type "salle" ayant précédemment été masquée.

    Ce script dispose de 2 paramètres obligatoires :

    • O365AdminLogin : Nom d'utilisateur d'un administrateur du tenant
    • O365AdminPassword : Mot de passe du compte administrateur

    Un exemple d'exécution du script : Show-O365RoomMailboxes -O365AdminLogin "ADMIN@DOMAIN.COM" -O365AdminPassowrd "PASSWORD"

    Après avoir taper cette commande le script s'occupe de tout :)

    Le script se télécharge par ici :)

    • 21/3/2016

    [PowerShell] Fonction de connexion à Exchange Online

    Bonjour tout le monde,

    Aujourd'hui je partage avec vous une petite fonction que j'utilise souvent dans mes scripts Office 365 afin d'ouvrir une PSSession avec l'environnement Exchange Online de mon client.

    Cette fonction dispose de 2 paramètres :

    • O365AdminLogin : Nom d'utilisateur d'un administrateur
    • O365AdminPassword : Mot de passe de l'utilisateur administrateur

    Exemple d'utilisation de la fonction : Connect-ExchangeOnline.ps1 -O365AdminLogin "admin@mytenant.onmicrosoft.com" -O365AdminPassword "MYPASSWORD"

    Pour télécharger la fonction, c'est par ici

    • 17/3/2016

    [PowerShell] Masquer les BAL ressources dans Office 365

    Dans le cadre d'un projet de migration de messagerie dans Office 365 pour un client, j'ai dû provisionner les boîtes aux lettres de ressources dans Office 365 mais il ne fallait pas que ces dernière soient accessibles durant la migration.

    Pour ce faire, j'ai utilisé quelques lignes de PowerShell afin de récupérer toutes les boîtes de type Ressource et les rendre non visibles aux utilisateurs (les ressources ne sont plus visibles dans la GAL).

    Ce script dispose de 2 paramètres obligatoires :

    • O365AdminLogin : Nom d'utilisateur d'un administrateur du tenant
    • O365AdminPassword : Mot de passe du compte administrateur

    Un exemple d'exécution du script : Hide-O365ResourceMailboxes -O365AdminLogin "ADMIN@DOMAIN.COM" -O365AdminPassowrd "PASSWORD"

    Après avoir taper cette commande le script s'occupe de tout :)

    Pour le télécharger, c'est par ici

    • 17/3/2016

    [PowerShell] Masquer les BAL de type salle dans Office 365

    Dans le cadre d'un projet de migration de messagerie dans Office 365 pour un client, j'ai dû provisionner les boîtes aux lettres de type "salle" dans Office 365 mais il ne fallait pas que ces dernière soient accessibles durant la migration.

    Pour ce faire, j'ai utilisé quelques lignes de PowerShell afin de récupérer toutes les boîtes de type "Salle" et les rendre non visibles aux utilisateurs (les salles ne sont plus visibles dans la GAL).

    Ce script dispose de 2 paramètres obligatoires :

    • O365AdminLogin : Nom d'utilisateur d'un administrateur du tenant
    • O365AdminPassword : Mot de passe du compte administrateur

    Un exemple d'exécution du script : Hide-O365RoomMailboxes -O365AdminLogin "ADMIN@DOMAIN.COM" -O365AdminPassowrd "PASSWORD"

    Après avoir taper cette commande le script s'occupe de tout :)

    Pour le télécharger, c'est par ici.

    • 12/3/2016

    [PowerShell] Lister le groupes de distribution Office 365 et leurs membres

    Un de mes clients m'a récemment demandé de lui lister tous ses groupes de distribution Office 365 en incluant les membres.

    Étant donné qu'il y avait plus d'une centaine de groupes, je me suis tout de suite tourné vers PowerShell pour réaliser un petit script !

    Ce script dispose de 3 paramètres obligatoires :

    • O365AdminLogin : Nom d'utilisateur d'un administrateur du tenant
    • O365AdminPassword : Mot de passe du compte administrateur
    • CSVFilePath : Chemin du fichier csv dans lequel seront écris vos groupes et membres

    Un exemple d'utilisation du script : .\Get-O365DLWithMembers.ps1 -O365AdminLogin "admin@mytenant.onmicrosoft.com" -O365AdminPassword "MYPASSWORD" -CSVFilePath "C:\_\myCsvFile.csv"

    Durant l'exécution du script des informations sur le groupe en cours de traitement apparaîtront à l'écran.

    Le fichier CSV ressemblera à ceci :

    Une fois l'export effectué, vous pourrez retravailler le fichier en utilisant Excel.

    Je me suis inspiré d'un script présent sur les Technet pour la création du mien : https://gallery.technet.microsoft.com/office/List-all-Users-Distribution-7f2013b2

    Pour récupérer le script, c'est par ici :)

    • 4/3/2016

    [Outlook 2016 Version 16.0.6568.2025] Suppression des mails du serveur ou mail dupliqué POP3

    Bonjour tout le monde,

    Un petit post pour vous indiqué que la dernière mise à jour d'Outlook 2016 peut fortement impacter vos clients.

    En effet, si vous avez coché "Laisser les mails sur le serveur" sans spécifier le délai après lequel les mails seront supprimés, il est possible que vous receviez les mails en doublon, triplon, ...

    Si vous avez coché l'option "Supprimer les mails du serveur au bout de xxx jours", Outlook supprimera les mails du serveur dès leur reception !

    Ces 2 bugs peuvent être très impactant et j'espère que Microsoft va très vite sortir un correctif. En attendant, ils fournissent des workaround (configurer les boîtes en IMAP si possible ou rollback à une version antérieure).

    [UPDATE 05/03] Microsoft a finalement publié un correctif. Mettez donc à jour vos Office !

    Bonne journée

    • 17/2/2016

    [PowerShell] Modifier le suffixe UPN pour plusieurs utilisateurs

     Aujourd'hui je vous livre un petit script permettant de modifier le suffixe UPN de plusieurs utilisateurs. J'ai eu besoin de réaliser cela afin de configurer Azure AD Sync pour un client.

    Le script dispose de plusieurs paramètres :

    • OldUPNSuffix (obligatoire) : Spécifiez le suffixe UPN actuel, celui que vous voulez modifier
    • NewUPNSuffix (obligatoire) : Spécifiez le nouveau suffixe UPN
    • UserOU (obligatoire) : Spécifiez l'OU supérieure au niveau de laquelle vous voulez effectuer les modifications (les utilisateurs présents dans les sous-OU seront également impactés)
    • DC (obligatoire) : Spécifiez le nom d'un contrôleur de domaine

    Exemple d'exécution du script :

    • .\Set-NewUPNSuffix.ps1 -OldUPNSuffix "contoso.local" -NewUPNSuffix "contoso.com" -UserOu "OU=Users,OU=Contoso,DC=contoso,DC=local" -DC "srv-ad.contoso.local"

    Pour télécharger le script, c'est par ici !

    • 25/1/2016

    [Tools] Lister les ordinateurs ou utilisateurs actifs ou désactivés dans l'AD

    Hello,

    Souvent des collègues me demandent des petits scripts PowerShell pour faire telle ou telle chose au niveau d'un domaine. Une demande qui revient particulièrement souvent est la possibilité de lister les utilisateurs ou ordinateurs désactivés dans l'AD.

    Du coup, je me suis dit qu'il pourrait être sympa de créer une petite interface graphique simple qui permettrait de récupérer ces informations (le tout fait en PowerShell bien sûr par le biais du logiciel PowerShell Studio).

    L'outil que j'ai mis en place peut s'exécuter depuis n'importe quel serveur qui est joint au domaine. En effet, au niveau de l'interface, vous allez devoir spécifier depuis quel contrôleur de domaine vous voulez importer le module ActiveDirectory. En plus de cela, vous devez indiquer si vous voulez lister les utilisateurs ou ordinateurs actifs ou désactivés au niveau de l'AD (le choix utilisateur ou ordinateur se fait en fonction de l'onglet dans lequel vous êtes). Une fois ceci effectué, vous pouvez cliquer sur le bouton OK.


    Le script va alors récupérer les objets demandés et vous les retourner dans une vue de type tableau.

    Dans les semaines à venir, j'ajouterai des fonctionnalités à cette interface, comme la possibilité d'exporter directement vers Excel ou encore de rechercher un utilisateur ou ordinateur en particulier :)

    Afin de pouvoir exécuter ce petit outil, il faut que le compte AD qui l'exécute ait le droit d'ouvrir une PSSession PowerShell et de lister les objets ADComputer et ADUser. Dans le cadre de mes tests, j'utilise un compte administrateur du domaine. Il faut également que le Remote Management soit activé sur le contrôleur de domaine en question (winrm quickconfig). 

    Ce script n'a été testé que sur Windows Server 2012 et Windows Server 2012R2.

    L'exécutable est joint à ce billet de blog.

    [Mise à jour le 26/01/16] : Ajout de log en bas de chaque onglet indiquant les actions effectuées par le script.

    Stay tuned ;)

    • 20/1/2016

    [PowerShell] Ressources Office 365

    Bonjour tout le monde,

    Si vous voulez vous lancer dans PowerShell pour Office 365 mais que vous ne savez pas trop par quel bout le prendre, je vous conseille l'excellent site powershell.office.com.

    Vous trouverez beaucoup d'information comme comment configurer votre machine pour pouvoir exécuter des commandes PowerShell pour Office 365 ou encore une bibliothèque de scripts.

    Bonne journée !

    • 4/1/2016

    [Surface Book] Précommande ouverte à partir d'aujourd'hui

    Une petit billet publicitaire pour annoncer l'ouverture de la précommande des Surface Book à partir d'aujourd'hui en France (le 5 janvier 2016).

    Pour pré-commander c'est par ici.

    • 28/12/2015

    [PowerShell] Création de plusieurs VM Hyper-V

     Dans mon dernier billet de blog, j'indiquais comment créer une VM avec un script que j'avais développé. Voici maintenant un script qui permet de créer plusieurs machines virtuelles depuis un fichier CSV source.

    Voici les colonnes à remplir :

    • VMName (obligatoire) : Nom de la machine virtuelle à créer
    • Processors (obligatoire) : Nombre de processeurs à assigner à la machine virtuelle
    • VMMemoryMB (obligatoire) : Quantité de RAM à assigner à la machine virtuelle (en MB)
    • VHDSizeGB (obligatoire) : La taille du VHD de la machine virtuelle (en GB)
    • VMGeneration (obligatoire) : La génération de votre machine virtuelle (soit 1, soit 2)
    • VHDPath (obligatoire) : Le chemin ou sera stocké le VHD de la machine virtuelle (penser à ajouter le nom du VHD à la fin du chemin. Exemple : D:\monVHD.vhdx)
    • InternalvSwitchName : Nom du vSwitch interne à assigner à la machine virtuelle (ce dernier doit exister)
    • ExternalvSwitchName : Nom du vSwitch externe à assigner à la machine virtuelle (ce dernier doit exister)
    • PrivatevSwitchName : Nom du vSwitch privé à assigner à la machine virtuelle (ce dernier doit exister)
    • IsoPath : Chemin de l'ISO à monter dans le DVD de la machine virtuelle

    Ci-dessous un exemple de fichier CSV rempli avec Excel.

    Une fois le fichier complété, il ne vous reste plus qu'à lancer la commande suivante afin de créer l'intégralité de vos machines : .\HYPERV_New-VMFromCSV -CSVPath "D:\HYPERV_VmToCreate.csv"

    Pour récupérer le script et le fichier CSV, c'est pas ici :)

    • 21/12/2015

    [PowerShell] Création de VM Hyper-V

    Après mon article sur la création de vSwitch en PowerShell, voici un petit script permettant de créer et configurer une VM dans Hyper-V. Le but de ce script est de :

    • Créer la VM
    • Configurer les paramètres virtuels de la VM
      • RAM
      • CPU
      • Generation de VM
      • Stockage et taille du VHD
    • Eventuellement monter un ISO dans le lecteur DVD
    • Connecter les vSwitch

    Ce script dispose de plusieurs paramètres obligatoires :

    • VMName : Nom de la VM à créer
    • VHDPath : Chemin ou sera stocké le VHD (penser à indiquer le nom du VHD dans le chemin --> D:\vhd\monVHD.vhd)
    • VHDSize : Taille du VHD en GB (exemple : 10GB)
    • VMMemory : RAM de la VM en MB (exemple : 1024MB)
    • VMGeneration : Génération de VM utilisée (par défaut à 2 mais peut être mis à 1)

    D'autres paramètres facultatifs existent : 

    • Processor : Le nombre de processeurs de la VM (par défaut à 1)
    • IsoPath : Le chemin de l'ISO à monter dans le lecteur DVD
    • InternalvSwitchName : Le nom du vSwitch interne s'il existe
    • PrivatevSwitchName : Le nom du vSwitch privé s'il existe
    • ExternalvSwitchName : Le nom du vSwitch externe s'il existe

    Quelques exemples d'utilisation de ce script : 

    • Création d'une VM avec tous les paramètres : .\HYPERV_New-VM.ps1 -VMName "TEST" -VHDPath "D:\Hyper-V\TEST.vhdx" -VHDSize 30GB -VMMemory 2048MB -Processor 2 -VMGeneration 2 -IsoPath "D:\SRV12.ISO" -InternalvSwitchName "Internal vSwitch" -ExternalvSwitchName "External vSwitch" -PrivatevSwitchName "Private vSwitch"
    • Création d'une VM en spécifiant nom, vhd, mémoire et génération : .\HYPERV_New-VM.ps1 -VMName "TEST" -VHDPath "D:\Hyper-V\TEST.vhdx" -VHDSize 30GB -VMMemory 2048MB -VMGeneration 2

    Le script est par ici :)

    • 21/12/2015

    [PowerShell] Création de vSwitch Hyper-V sous Windows 10

    Sur mon PC tournant sous Windows 10, j'utilise Hyper-V pour virtualiser mes machines de test. Quand je réinstalle ma machine (ou mes machines :p), je n'aime pas y passer trop de temps. De ce fait j'ai scripté pas mal de choses dont la création des vSwitch Hyper-V. Du coup, dès que j'ai activé la fonctionnalité Hyper-V (en PowerShell bien sûr tel qu'indiqué dans un de mes anciens billets de blog), je fais tourner mon script de création de vSwitch.

    Le script a plusieurs paramètres :

    • NetworkAdapterName (Obligatoire) : Correspond au nom de votre carte réseau. Celle-ci sera utilisée lors de la création du vSwitch externe.
    • InternalVSwtich (Facultatif) : Vous mettrez ce booléen à $True si vous voulez disposer d'un vSwitch interne. Ce paramètre est à $False par défaut.
    • PrivateVSwitch (Facultatif) : Vous mettrez ce booléen à $True si vous voulez disposer d'un vSwitch privé. Ce paramètre est à $False par défaut.

    Exemples d'exécution du script :

    • Création d'un vSwitch externe, interne et privé basé sur une carte wifi nommée "wifi" : .\HYPERV_Add-HypervSwitch -NetworkAdapterName "wifi" -InternalVSwitch $True -ExternalVSwitch $True
    • Création d'un vSwitch externe uniquement basé sur une carte wifi nommée "wifi" : .\HYPERV_Add-HypervSwitch -NetworkAdapterName "wifi"


    Pour récupérer le script, c'est par ici :)

    • 28/9/2015

    [PowerShell] Supprimer des doublons

    Un petit post qui n'est pas en relation avec mon travail mais avec PowerShell :P.

    Hier, en important des photos depuis mon appareil photo numérique (environ 1 000), j'ai fait une fausse manipulation et je me suis retrouvé avec toutes mes photos importées en double... La structure de nommage des doublons était NOM_DE_LA_PHOTO-001.JPG.

    J'ai donc décidé d'ouvrir ma petite console PowerShell afin de supprimer tous les doublons qui avaient été créés. Voici la commande que j'ai utilisé :

    Get-ChildItem VOTRE_CHEMIN -File | Where-Object Name -like "*-001.JPG" | Remove-Item

    Après exécution de cette commande, tous les doublons avaient été supprimés :)