Sylver SCHORGEN Blog's

Articles, astuces et news sur les technologies Microsoft et plus particulièrement tournant autour de Powershell
    • 9/9/2015

    [PowerShell] Récupérer la liste des comptes utilisateurs verrouillés

    J'ai eu besoin récemment de lister tous les utilisateurs AD qui avaient un compte vérrouillé puis de déverrouiller ces derniers.

    Pour ce faire, voici les commandes PowerShell utilisées (il faut avoir lancé une console PowerShell sur un DC en tant qu'administrateur) :

    • Import-Module ActiveDirectory : Permet de charger le module Active Directory
    • Search-ADAccount -LockedOut : Permet de lister tous les utilisateurs qui ont un compte AD verrouillé
    • Search-ADAccount -LockedOut | Unlock-ADAccount : Permet de déverrouiller tous les comptes verrouilés
    • 21/8/2015

    [PowerShell] Script de création d'utilisateurs

    Dans le cadre de lab ou de tests que je peux effectuer, il me faut tout le temps recréer des comptes utilisateurs. Afin de ne pas avoir à faire cela à la main, j'ai créé un petit script qui prends les valeurs d'un fichier XML en entrée.

    Concernant le fichier XML, vous n'avez qu'à ajouter des blocs <User></User> en fonction de vos besoins et renseigner les informations à l'intérieur de ce dernier. J'ai inséré quelques utilisateurs fictifs dans mon fichier XML afin de vous montrer comment le constituer. Tout en haut du fichier, vous avez une balise GlobalPassword que vous pouvez remplir si vous voulez attribuer le même mot de passe à tous les utilisateurs. Si vous voulez configurer des mots de passe différents pour tous vos utilisateurs, renseignez la balise Password de chaque utilisateur.

    Une fois votre fichier XML correctement rempli, vous n'avez plus qu'à exécuter la commande suivante : .\AD_Add-ADUserAccounts.ps1 -OU "OU=User Accounts,OU=LAB,DC=lab,DC=local".

    Le paramètre OU permet de spécifier l'unité organisationnelle au niveau de laquelle vous voulez créer vos utilisateurs. Le script test si les utilisateurs existent déjà. Si ce n'est pas le cas ils seront créés :)

    Vous pouvez trouver le script sur mon dépot GitHub.

    • 26/7/2015

    [PowerShell] SharePoint - Récupérer la liste des serveurs SharePoint

     Avec une seule ligne de PowerShell, il est possible de récupérer la liste de tous les serveurs WFE et APP de votre ferme SharePoint :

    Get-SPServer | ? {$_.Role -ne "Invalid"}

    Une partie des noms des serveurs à été masquée au niveau de la capture d'écran ;)

    • 25/7/2015

    [PowerShell] Installer le .NET Framework 3.5

    Beaucoup de solution (comme SQL Server par exemple) exige en prérequis d'avoir le .NET Framework 3.5.

    Voici comment l'installer en PowerShell : Install-WindowsFeature -Name NET-Framework-Features -Source D:\sources\sxs.

    Pensez à avoir spécifier votre dossier SXS (avec le paramètre -Source). Ce dernier peut se situer sur un partage résuea ;)

    • 25/7/2015

    [PowerShell] SharePoint - Récupérer la liste des administrateurs de la ferme

     J'ai récemment eu besoin de récupérer la liste des administrateurs d'une ferme SharePoint 2013 en utilisant PowerShell. Ceci peut être réalisé en 2 lignes :

    $CentralAdminWebApplication = Get-SPWebApplication -IncludeCentralAdministration | where-object {$_.IsAdministrationWebApplication}
    $SPFarmAdministrators = $CentralAdminWebApplication.Sites[0].RootWeb.SiteGroups["Farm administrators"].Users

    La 1ère ligne permet de récupérer uniquement l'application web de l'administration centrale.

    La 2nde ligne permet de récupérer tous les utilisateurs du groupe "Farm Administrators" et ainsi d'avoir une liste exhaustive de tous les administrateurs de votre ferme SharePoint :)

    • 25/7/2015

    [SharePoint 2013] Installer le Workflow Manager 1.0 en ligne de commande

    Le but de cet article est de vous montrer comment télécharger et installer le workflow manager 1.0 pour SharePoint 2013 SP1. Une fois les sources téléchargées, vous pourrez les installer sur n'importe quelle serveur.

    Dans un premier temps, il faut télécharger Web Platform Installer 5.0. Une fois le package téléchargé, décompressez le dans un dossier (C:\_Sources dans mon exemple) en tapant la commande suivante :

    msiexec /a <chemin du msi téléchargé> /qb TARGETDIR=<chemin du dossier de décompression>

    Une fois ceci effectué, dirigez-vous dans le dossier de décompression puis dans le dossier Microsoft et enfin dans la dossier Web Platform Installer (C:\_Sources\Microsoft\Web Platform Installer dans mon cas) puis exécutez la commande suivante :

    WebpiCmd /Offline /Products:WorkflowManagerRefresh /Path:C:\_WorkFlowManagerSources

    Maintenant que les sources sont téléchargées, il faut les copier sur le serveur qui hérbergera Workflow Manager 1.0. Il faut également décompresser Web Platform Installer sur ce serveur. Une fois ceci effectué, entrez la commande suivante :

    WebpiCmd /Install /Products:WorkflowManagerRefresh /XML:VOTRE_CHEMIN\feeds\latest\webproductlist.xml

    Une fois la commande lancée, Web Platform Installer s'occupe d'installer toutes les dépendances liées au Workflow Manager ainsi que le Workflow Manager et indique lorsque toutes les installations sont terminées.

    Il ne vous reste "plus qu'à" installer les éventuelles mises à jour pour le Service Bus et pour le Workflow Manager (voir sur le Microsoft Download Center) ainsi que configurer Workflow Manager et SharePoint afin qu'ils puissent communiquer ensemble :)

    • 7/7/2015

    [PowerShell] Astuce : Récupérer la liste de toutes les erreurs des journaux d'événements

    Voici une petite astuce afin de récupérer tous les logs de type 'Erreur' en PowerShell depuis vos journaux d'événements (votre console PowerShell doit être lancé en tant qu'administrateur) :

    Get-EventLog -List | Select-Object -ExpandProperty Entries -ErrorAction SilentlyContinue | Where-Object { $_.EntryType -eq 'Error' }

    Si vous voulez afficher tous les Warnings, remplacez $_.EntryType -eq 'Error' par $_.EntryType -eq 'Warning'.

    • 23/6/2015

    [PowerShell] Configurer le fuseau horaire

    J'ai développé un petit script permettant de configurer le fuseau horaire en utilisant PowerShell. Ce script est composé d'une fonction nommée Set-TimeZone. Vous trouverez ce dernier ici :

    Voici comment utiliser ce script : Set-TimeZone -Name "New Caledonia"

    Vous devez renseigner le nom d'un des fuseaux horaires présents dans Windows au niveau du paramètre -Name. Une liste de ces derniers est disponible ici : https://goo.gl/oHTVvH

    Vous trouverez ce script sur mon repository GitHub :)

    • 23/6/2015

    [PowerShell] Astuce : Désactiver l'ouverture automatique de Server Manager au démarrage

    Voici 2 petites lignes PowerShell permettant de désactiver l'ouverture automatique de Server Manager au démarrage :

    $serverManagerKey = "HKLM:\SOFTWARE\Microsoft\ServerManager"
    Set-ItemProperty -Path $serverManagerKey -Name "DoNotOpenServerManagerAtLogon" -Value 1

    Ceci a été testé sous Windows Server 2012 et Windows Server 2012 R2.

    • 21/6/2015

    [DirSync] Filtrer les objets AD à synchroniser avec Office 365

    Lorsque vous avez installé et configuré DirSync, il est fort probable que tous vos comptes utilisateurs aient été synchronisés (comptes de services et autre). On a pas forcément envie / besoin de synchroniser 100% de ses comptes dans Office 365.

    Afin de pouvoir filtrer, lancez le logiciel Synchronization Service Manager situé ici : C:\Program Files\Windows Azure Active Directory Sync\SYNCBUS\Synchronization Service\UIShell\missclient.exe.

    Une fois l’outil démarré, dirigez-vous vers le menu Management Agent, sélectionnez Active Directory Connector. Une nouvelle interface apparaîtra à l’écran. Dirigez-vous vers le sous menu Configure Directory Partition puis cliquez sur Containers ….

    Une interface apparaîtra à l'écran en vous demandant d'entrer le login / mot de passe d'un administrateur. Une fois ceci effectué, l'interface de filtrage apparaîtra à l'écran. Sélectionnez uniquement les OUs contenant les utilisateurs que vous voulez synchroniser.

    • 18/6/2015

    [PowerShell] Lancer une synchronisation DirSync

    Après avoir installé DirSync, par défaut, l'intervalle de synchronisation entre votre AD et Office 365 est de 3h. Vous pouvez modifier cette valeur (augmentation ou diminution) ou alors forcer, à l'aide de PowerShell, une synchronisation.

    Pour ce faire, lancez une console PowerShell en tant qu'administrateur depuis le serveur où DirSync est installé. Entrez la commande suivante afin de charger le module DirSync :

    Import-Module DirSync

    Une fois le module chargé, déplacez-vous dans le dossier C:\Program Files\Windows Azure Active Directory Sync\DirSync puis sourcez le fichier ImportModules.ps1 en entrant la commande suivante :

    .\ImportModules.ps1

    Dès que ceci est effectué, entrez la commande suivante :

    Start-OnlineCoexistenceSync

    • 18/6/2015

    [PowerShell] Azure DSC Extension v2.0

    L'équipe produit PowerShell à annoncer il y a quelques heures qu'ils venaient de publier la version 2 des Azure DSC Extension.

    Pour plus d'information, voici le lien de l'article : http://blogs.msdn.com/b/powershell/archive/2015/06/17/azure-dsc-extension-v2-0-released.aspx

    Pour plus d'information sur l'historique des versions c'est par ici : http://blogs.msdn.com/b/powershell/archive/2014/11/20/release-history-for-the-azure-dsc-extension.aspx

    • 17/6/2015

    [DirSync] Modifier le délais de synchronisation AD avec Office 365

    Après avoir installé et configuré DirSync, l'intervalle de synchronisation entre votre domaine et Office 365 est de 3h par défaut. Il est possible de modifier la valeur de la clé SyncTimeInterval située dans le fichier C:\ProgramFiles\Windows Azure Active Directory Sync\Microsoft.Online.DirSync.Scheduler.exe.Config.

    Dans la capture d'écran ci-dessous j'ai modifié la valeur à 12h. La synchronisation entre le domaine et Office 365 se fera donc 2 fois par jour :)

    • 5/6/2015

    [PowerShell] Office 365 - Créer un nouvel utilisateur et lui attribuer une licence

     Dans Office 365, vous pouvez créer vos utilisateurs via la console d'administration ou via PowerShell. Dans le cas ou vous utilisez PowerShell, il faut attribuer une licence à votre utilisateur après l'avoir créer. Pour ce faire, voici la liste des commandes à exécuter :


    $sku = Get-MsolAccountSku

    La commande ci-dessus permet de récupérer son abonnement

    New-MsolUser -UserPrincipalName "demo@yourdomain.onmicrosoft.com" -DisplayName "Demo User" -FirstName "Demo" -LastName "USER" -UsageLocation FR

    La commande ci-dessus permet de créer un nouvel utilisateur

    Set-MsolUserLicense -UserPrincipalName "demo@yourdomain.onicrosoft.com" -AddLicenses $sku.AccountSkuId

    La commande ci-dessus permet d'attribuer une licence pour cet utilisateur


    • 3/6/2015

    [PowerShell] Microsoft ajoute le support de SSH à PowerShell

    Microsoft à annoncé hier que l'équipe PowerShell allait officiellement supporté SSH mais aussi contribuer au projet OpenSSH Community. Pour plus d'information voici le lien du blog post officiel : http://blogs.msdn.com/b/powershell/archive/2015/06/03/looking-forward-microsoft-support-for-secure-shell-ssh.aspx

    • 3/6/2015

    [Active Directory] Modifier le container par défaut des utilisateurs

    Par défaut, tous les utilisateurs créés dans un domaine sont "stockés" dans le container Users si aucune OU n'est spécifiée (par exemple lorsque l'on créé les utilisateurs en utilisant PowerShell). A des fins de gestion (GPO), il est fortement conseillé de le changer.

    Pour ce faire, il vous faudra le DN (Distinguished Name) complet de l'OU cible qui sera votre nouveau "container" par défaut pour vos utilisateurs. Dans mon cas, le DN est "OU=Users,OU=LAB,DC=LAB,DC=LAN". Afin de modifier votre emplacement par défaut, tapez la commande redirusr suivi de votre DN comme ci-dessous :

    • redirusr "OU=Users,OU=LAB,DC=LAB,DC=LAN"

    • 3/6/2015

    [Divers] SF2i nominée Partenaire Microsoft de l'Année en Nouvelle-Calédonie

    Bonjour tout le monde,

    Un petit post non technique pour faire une peu de pub pour SF2i, la société dans laquelle je travaille :)

    Microsoft nous a décerné le titre de Partenaire Microsoft de l'année en Nouvelle-Calédonie (https://goo.gl/e3RTAf) !

    C'est une 1ère en Nouvelle-Calédonie et c'est pour moi une grande fierté de travailler dans cette société :)

    Je profite de ce post pour féliciter tous les collaborateurs de SF2i qui ont permis de remporter ce titre et pour remercier le gérant de l'entreprise, qui sait nous faire confiance et nous permet de réaliser pleinement tous nos projets ! Je remercie également tous nos partenaires ainsi que nos clients qui nous font confiance.

    Bonne journée :)

    • 3/6/2015

    [Active Directory] Modifier le container par défaut des ordinateurs

    Bonjour à tous.


    Aujourd'hui, je vous propose une petite astuce qui vous permet de modifier le container par défaut au niveau duquel les ordinateurs intégrés à l'AD sont mis. En effet, par défaut, tous les ordinateurs intégrés dans un domaine (poste client ou serveur) sont "stockés" dans le container Computers. A des fins de gestion, il est fortement conseillé de le changer (GPO).

    Pour ce faire, il vous faudra le DN (Distinguished Name) complet de l'OU cible qui sera votre nouveau "container" par défaut. Dans mon cas, le DN est "OU=Computers,OU=LAB,DC=LAB,DC=LAN". Afin de modifier votre emplacement par défaut, tapez la commande redircmp suivi de votre DN comme ci-dessous :

    • redircmp "OU=Computers,OU=LAB,DC=LAB,DC=LAN"

    • 29/5/2015

    [PowerShell] Installer et Configurer le rôle DHCP

    Dans cet article nous allons voir :

    • Comment installer le rôle DHCP en PowerShell
    • Comment autoriser le serveur DHCP dans l'AD
    • Comment créer des scopes DHCP

    Etape 1 : Installation du rôle

    Afin de pouvoir installer le rôle DHCP, nous allons utiliser la commande suivante :

    Install-WindowsFeature DHCP -IncludeManagementTools

    Le paramètre -IncludeManagementTools permet d'installer la console d'administration DHCP

    Etape 2 : Autorisation du serveur DHCP dans l'AD

    Maintenant que vous avez installé votre rôle, il vous faut autoriser votre serveur au niveau de votre AD. Pour ce faire, entrez la commande suivante :

    Add-DHCPServerInDC -DNSName Nom_Serveur

    Au niveau du paramètre -DNSName, pensez à entrer le FQDN de votre serveur (Nom_Serveur.Votre_Domaine)

    Etape 3 : Configuration d'un scope DHCP

    Maintenant que votre rôle est ajouté et que votre serveur est autorisé dans l'AD, vous pouvez ajouter vos scopes. Dans le cadre de cet article, un seul scope basique sera configuré tel qu'indiqué ci-dessous :

    • Nom : LAB-PC
    • Description : Plage DHCP des ordinateurs du domaine LAB
    • Plage IP : De 192.168.100.100 à 192.168.100.200
    • Passerelle par défaut : 192.168.100.2
    • Serveur DNS : 192.168.200.10

    Création de l'option de serveur DNS :

    Set-DhcpServerv4OptionValue -DNSServer 192.168.100.10 -DNSDomain lab.lan -Router 192.168.100.2

    Création du scope :

    Add-DhcpServerv4Scope -Name "LAB-PC" -StartRange 192.168.100.100 -EndRange 192.168.100.200 -SubnetMask 255.255.255.0 -Description "Plage DHCP des ordinateurs du domaine LAB"


    Votre serveur DHCP est maintenant installé, autorisé dans votre AD et votre scope est configuré. Vous pouvez vérifiez cela en ouvrant la console DHCP.

    Bonne configuration :)

    • 28/5/2015

    [Outils SharePoint] AutoSPInstaller GUI Version Web

    Pour tous ceux d'entre vous qui font des installations SharePoint et qui utilisent AutoSPInstaller GUI pour configurer AutoSPInstaller, j'ai été agréablement surpris ce matin en voyant que les développeurs en avaient fait une version web :) L'URL de ce site est : https://autospinstaller.azurewebsites.net/

    Une fois sur le site vous avez 2 possibilités :

    • Démarrer une configuration de 0 et le site vous génèrera un fichier XML : Option Load Default Template sur la page d'accueil
    • Fournir un de vos fichiers XML de configuration afin de le modifier : Option Load From My XML sur la page d'accueil

    Si vous n'avez pas internet au moment de la configuration, pas de panique ;) La version graphique existe toujours mais elle est considérée comme dépréciée par les développeurs de l'application.

    Bonnes installations SharePoint :)

    • 26/5/2015

    [PowerShell] SharePoint - Modifier l'URL du Content Type Hub

    Si vous avez mis en place le content type hub et qu'au moment de la configuration vous vous êtes trompé au niveau de l'URL renseignée, vous vous êtes probablement rendu compte qu'il n'était pas possible de modifier cette URL via l'interface.

    Si vous êtes dans ce cas, ne vous inquiétez pas. Il est possible de modifier cette URL mais uniquement en utilisant PowerShell.
    Pour ce faire, il faut utilisant cette commande : Set-SPMetadataServiceApplication -Identity "Votre_Application_De_Service" -HubURI "http://votre_nouvelle_url"

    Attention, en exécutant cette commande, un avertissement apparaîtra à l'écran. Ce dernier vous indique qu'en réalisant cette action, il faudra absolument republier tous les types de contenu.

    Ceci fonctionne avec SharePoint 2010 et 2013.

    • 25/5/2015

    [Astuce PowerShell] Créer une valeur de registre DWORD

    Aujourd'hui, une petite astuce pour créer une valeur de registre de type DWORD.

    Supposons que la clé de registre HKCU:\Software\Sylver existe déjà et que je veuille créer une valeur de type DWORD ayant pour nom "MyDWORD" et pour valeur 5.

    Voici la commande PowerShell à utiliser : New-ItemProperty "HKCU:\Software\Sylver\" -Name "MyDWORD" -Value 5 -PropertyType "DWORD" 


    On peut ensuite aller vérfier dans l'éditeur de registre si la valeur a bien été créé.

    • 21/5/2015

    [Astuce PowerShell] Lister toutes les VM sur un Hyper-V

    Avec Hyper-V (version Windows Server 2012R2 et Windows 8.1 Pro/Ent), il est très très simple de récupérer la liste de toutes les machines hébergées sur un hôte Hyper-V.

    La seule commande à connaitre est : Get-VM

    Si on veut lister uniquement les machines virtuelles étant démarrées : Get-VM | Where-Object State -eq 'Running'


    • 19/5/2015

    [SharePoint 2016] Nouveautés sur l'installation et le déploiement

    Hello tout le monde,

    Pendant l'Ignite Microsoft a dévoilé pas mal de chose sur les nouveaux produits dont SharePoint 2016.

    Voici un petit article sur lequel je suis tombé indiquant les nouveautés concernant le déploiement de SharePoint : http://blogs.technet.com/b/wbaer/archive/2015/05/12/what-s-new-in-sharepoint-server-2016-installation-and-deployment.aspx

    Vivement qu'on puisse mettre la main sur cette nouvelle mouture de SharePoint et qu'on puisse s'amuser avec :)

    Attention : SharePoint 2016 étant encore en développement, cet article peut évoluer.

    • 7/5/2015

    [ASTUCE POWERSHELL] Démarrer les services arrêtés avec un statut de démarrage Automatique

    Il n'y a pas très longtemps, j'ai eu besoin de lister tous les services Windows arrêtés sur un serveur et de redémarrer ceux ayant un statut de démarrage à Automatique.

    J'ai donc tout de suite pensé à Get-Service. Cependant, après avoir tous les membres disponibles, aucun ne permet de récupérer le statut de démarrage d'un service. Surement un oubli de la part de Microsoft.

    Je me suis donc tourné vers notre très chère amie Get-WMIObject [:P] Voici la commande :

    Get-WmiObject win32_service | select name, startmode,state | Where-Object -FilterScript {($_.State -eq "Stopped") -and ($_.startmode -eq "Auto")} | Start-Service


    Expliquons maintenant chaque partie du pipeline de cette longue commande. Get-WmiObject win32_service | select name, startmode,state  permet de récupérer les services Windows en ne filtrant que sur le nom, le mode de démarrage et l'état du service.

    Where-Object -FilterScript {($_.State -eq "Stopped") -and ($_.startmode -eq "Auto")} permet de filtrer sur les services étant arrêtés ($_.State -eq "Stopped") et ayant un mode de démarrage automatique ($_.startmode -eq "Auto").

    Une fois ces éléments récupérés, nous pouvons taper la commande Start-Service afin ne démarrer que les services ayant un mode de démarrage automatique et étant arrêtés.