Sylver SCHORGEN Blog's

Articles, astuces et news sur les technologies Microsoft et plus particulièrement tournant autour de Powershell
    • 3/2/2018

    [POWERSHELL] Connect to Exchange Online

    You'll find bellow the 3 PowerShell lines necessary to connect to Exchange Online :

    $Credentials = Get-Credential
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credentials -Authentication Basic -AllowRedirection
    Import-PSSession $Session
    The first line will result by prompting you for an Office 365 login and password.
    • 2/2/2018

    [POWERSHELL] Compter le nombre de mails reçus par un domaine spécifique

    Bonjour tout le monde,

    Ces derniers temps, je développe pas mal de script de statistiques pour des clients ou pour de l'interne. Récemment, j'ai eu besoin de créer un script qui permettait, en autre, de compter le nombre de mails reçus par un domaine spécifique. Ceci me permet de connaître le nombre de mails reçus durant les 7 derniers jours en provenance d'un domaine spécifique.

    Commençons par la commande PowerShell permettant de récupérer la liste des mails envoyés par un domaine spécifique durant les 7 derniers jours :  

    Get-MessageTrace -StartDate (Get-Date).Adddays(-7) -EndDate (Get-Date) -SenderAddress *@domaine.com

    Cette commande dispose de plusieurs paramètres :

    • -StartDate (Get-Date).AddDays(-7) : Permet d'indiquer que la date de début correspond à celle d'il y a 7 jours
    • -EndDate (Get-Date) : Permet d'indiquer que la date de fin correspond à aujourd'hui
    • -SenderAddress *@domaine.com : Permet d'indiquer que nous cherchons tous les mails en provenance du domaine domaine.com

    Une fois que nous avons ce résultat, il ne nous reste plus qu'à utiliser la propriété .Count de l'objet retourné pour connaître le nombre de mails total. La commande finale est donc celle-ci : (Get-MessageTrace -StartDate (Get-Date).Adddays(-7) -EndDate (Get-Date) -SenderAddress *@domaine.com).Count

    On constatera ici que le domaine @domaine.com nous a envoyé 1 000 mails.

    • 25/1/2018

    [POWERSHELL] Ajouter une machine distante dans le TrustedHost

    Hello tout le monde,

    En ce moment je fais pas mal d'Azure et une chose que je fais à chaque nouvelle VM de créée, c'est d'ajouter l'IP de la VM dans mon TrustedHost. En effet, n'étant pas dans le même domaine, c'est une obligation.

    Voici la commande PowerShell qu'il est indispensable de taper : Set-Item WSMAN:\localhost\Clients\TrustedHost -Value votre_ip

    Il faut avoir, bien entendu, lancer votre console PowerShell en tant qu'administrateur. Suite à cela, vous pourrez effectuer du PSRemoting sur cette machine. Cela fonctionne également avec les IP publiques (comme pour Azure ;))

    • 25/1/2018

    [POWERSHELL] Add a remote machine to your TrustedHost

    Hi everyone,

    I'm doing a lot a Azure IAAS those days and one thing I need to do for each VM I create on Azure is to add the public IP to my TrustedHost in order to do some PSRemoting (because these servers are not in my domain).

    Here is the command you need to enter on your computer to add an IP to your TrustedHost : Set-Item WSMAN:\localhost\Clients\TrustedHost -Value votre_ip

    Your PowerShel console must be launched as an Administrator.

    • 24/1/2018

    [POWERSHELL]Installer PowerShell Core 6.0 sur Mac OS

    Hello tout le monde,

    Afin de pouvoir installer et utiliser PowerShell sur Mac OS, commencez par télécharger le .pkg à cette adresse : https://github.com/PowerShell/PowerShell.

    Suite au téléchargement, installez PowerShell sur votre Mac.

    Après l'avoir installez, il ne vous reste plus qu'à lancer une console et de taper pwsh afin de lancer PowerShell.

    • 20/1/2018

    [POWERSHELL] Disable Active Directory Synchronization with Office 365

    Hi everyone,

    Just a little reminder on how to disable Active Directory synchronization between your On-Premise Active Directory and Azure AD.

    1. Connect to Office 365 by using PowerShell with an administrator account : Connect-MSOLService
    2. Execute the following command : Set-MsolDirSyncEnabled -EnableDirSync $false

    I use this command a lot in my lab environment when I need to try some stuff for my clients before to configure them in their tenants !

    • 20/1/2018

    [POWERSHELL] Désactiver la synchronisation AD Office 365

    Hello tout le monde,

    Un petit article pense bête pour vous (et surtout pour moi) sur comment désactiver la synchronisation Active Directory au niveau d'Office 365.

    1. Connectez-vous à Office 365 en PowerShell avec un compte administrateur du tenant : Connect-MSOLService
    2. Lancez la commande suivante : Set-MsolDirSyncEnabled -EnableDirSync $false

    C'était un bref article sur la désactivation de la synchronisation AD vers Office 365 mais si vous cherchez la commande elle est là ;) C'est souvent quelque-chose que je fais sur mon tenant de lab afin de valider certaines conf clients par exemple (avant de les déployer en prod) !

    • 27/11/2017

    [PowerShell] Déployer Active Directory en utilisant PowerShell DSC

    Bonjour à tous,

    Je me suis fait un petit script DSC pour le déploiement de mes infra AD de test (1 seul contrôleur de domaine). Ce script me permet de déployer mes DC bien plus rapidement que si je le faisais à la main.

    Il faut disposer des modules xComputerManagement et xActiveDirectory pour que ce script soit fonctionnel.

    Le script dispose de paramètre obligatoire :

    • AdministratorLogin: Le nom de votre utilisateur administrateur
    • AdministratorPassword: Le mot de passe de votre utilisateur administrateur
    • ServerName : Le nom du serveur (il sera renommé ainsi)
    • WorkGroupName : Le nom du workgroup dans lequel le serveur est (avant le déploiement d'ADDS)
    • DomainName : Le nom de votre domaine

    Le script a été créé pour s'appliquer sur une machine (le noeud configuré dans le script est "localhost").

    La dernière ligne du script #Start-DSCConfiguration -Wait -Force -Path 'C:\_Me\Sources\MOF_Files\ConfigureFirstDomainController' est à utiliser pour appliquer la configuration à votre machine.

    Suite à l'application du script, votre serveur disposera d'ADDS et DNS de déployés (et des consoles d'administration associées).

    $AdministratorLogin = 'Administrator'
    $AdministratorPassword = 'P@$$w0rd'
    $SecurePassword = ConvertTo-SecureString $AdministratorPassword -AsPlainText -Force
    $AdministratorCredential = New-Object System.Management.Automation.PSCredential ($AdministratorLogin, $SecurePassword)

    Configuration ConfigureFirstDomainController {
    param (
    [string[]]$NodeName ='localhost',
    [Parameter(Mandatory)][string]$ServerName,
    [Parameter(Mandatory)][string]$WorkgroupName,
    [Parameter(Mandatory)][string]$DomainName
    )

    #Import required DSC resources (must be installed first)
    Import-DSCResource -Module xComputerManagement
    Import-DSCResource -Module xActiveDirectory

    Node $NodeName {
    xComputer ComputerNameAndWorkgroup {
    Name = $ServerName
    WorkGroupName = $WorkgroupName
    }

    WindowsFeature ADDS {
    Ensure = 'Present'
    Name = 'AD-Domain-Services'
    IncludeAllSubFeature = $true
    }

    WindowsFeature RSAT {
    DependsOn = '[WindowsFeature]ADDS'
    Ensure = 'Present'
    Name = 'RSAT-AD-Tools'
    IncludeAllSubFeature = $true
    }

    xADDomain SetupFirstDomain {
    DomainAdministratorCredential = $AdministratorCredential
    DomainName = $DomainName
    SafemodeAdministratorPassword = $AdministratorCredential
    DependsOn = '[WindowsFeature]RSAT'
    DomainNetbiosName = $DomainName.Split('.')[0]
    }
    }
    }

    $ConfigurationData = @{
    AllNodes = @(
    @{
    NodeName = 'localhost';
    PSDscAllowPlainTextPassword = $true
    }
    )
    }

    ConfigureFirstDomainController -NodeName "localhost" -ServerName "SRV-AD1" -WorkgroupName "LAB" -DomainName "LAB.LAN" -OutputPath 'C:\_Me\Sources\MOF_Files\ConfigureFirstDomainController' -ConfigurationData $ConfigurationData
    #Start-DSCConfiguration -Wait -Force -Path 'C:\_Me\Sources\MOF_Files\ConfigureFirstDomainController'
    • 27/9/2017

    [SharePoint] Microsoft Migration Tool

    Hi everyone,

    Microsoft annonced and published a tool to migrate data from a file share, SharePoint On-Premise or  CSV file (for bulk migration) to SharePoint Online ! That is terrific !

    I look forward to using this tool in one of my future migration and will keep you posted :-)

    The official article is here : https://techcommunity.microsoft.com/t5/SharePoint-Blog/Introducing-the-SharePoint-Migration-Tool-from-Microsoft/ba-p/109767

    • 26/9/2017

    [SharePoint] Outil de migration Microsoft

    Hello tout le monde,

    Microsoft a profité de l'Ignite afin d'annoncer un outil de migration vers SharePoint Online (depuis un partage réseau, un SharePoint On-Premise ou un fichier CSV pour un import en masse) :-)

    J'ai hâte de pouvoir tester cet outil afin de pouvoir vous en faire un retour !

    L'article officiel est par ici : https://techcommunity.microsoft.com/t5/SharePoint-Blog/Introducing-the-SharePoint-Migration-Tool-from-Microsoft/ba-p/109767

    • 23/9/2017

    [PowerShell - Domain Migration] SharePoint farm domain migration - User & Group migration

    Hi everyone,

    For one of my client, I had to migrate a SharePoint 2010 farm to a new domain. After reinstalling SharePoint from the beginning, I had to configure every service applications and migrate every content databases.

    This post is the first of a series dedicated to migrated SharePoint from one domain to another.

    The "problem" with the migrated database was that all user accounts and groups configured in SharePoint were from the old domain and not the new one. It was mandatory to migrate the old accounts to the new one (in the new domain). To do this task, I developped some PowerShell scripts. The script used to migrate users and group at the farm level is explained bellow. You can find this script here --> https://github.com/sschorgen/PowerShell/tree/master/SP10_Migrate-SPFromDomain

    This script was written and executed on SharePoint 2010.

    It is mandatory to create 2 CSV files :

    • 1 used to make the correspondence between the groups of the old domain and the new one
    • 1 used to make the correspondence between the usersof the old domain and the new one

    You can find an example of the group CSV file below :

    You can find an example of the user CSV file below :

    One part of the script is used to migrate groups :

    ForEach($Group in $Groups) {
    Write-Host " --- MIGRATING GROUP " $Group.oldDomain "-->" $Group.newDomain -ForegroundColor Yellow -NoNewLine
    $farm.MigrateGroup($Group.oldDomain, $Group.newDomain)
    Write-Host " OK !" -ForegroundColor Green
    }

    Another part of the script is used to migrate users :

    ForEach($User in $Users) {
    Write-Host " --- MIGRATING USER " $User.oldDomain "-->" $User.newDomain -ForegroundColor Yellow -NoNewLine
    $farm.MigrateUserAccount($User.oldDomain, $User.newDomain, $false)
    Write-Host " OK !" -ForegroundColor Green
    }

    Once you have created your 2 CSV files, you can execute this command :

    .\SP10_Migrate-SPUserAndGroupFromDomain.ps1 -UserMappingsCSV "D:\Scripts\users_to_migrate.csv" - GroupMappingsCSV "D:\Scripts\groups_to_migrate.csv"

    Happy migration ;)

    • 16/9/2017

    [PowerShell - Migration de domaine] Script de migration des groupes et utilisateurs de la ferme SharePoint

    Dans le cadre d'une migration SharePoint de domaine, nous avons réinstallé intégralement la ferme SharePoint 2010 d'un client dans un nouveau domaine. Suite à la réinstallation, il fallait reconfigurer l'intégralité des applications de service et restaurer les bases de données de contenu.

    Ce post est le premier d'une série dédiée à la migration SharePoint de domaine.

    Le "problème" avec les bases de données de contenu était les comptes utilisateurs et les groupes. En effet, suite à la restauration des bases de données de contenu, tous les comptes utilisateurs et les groupes étaient ceux de l'ancien domaine. Il était donc indispensable de migrer les utilisateurs et groupes afin de les faire "matcher" avec le nouveau domaine. Pour cela, plusieurs script ont été réalisés. Le script présenté ci-dessous permet de migrer tous les utilisateurs et groupes au niveau de la ferme SharePoint de destination, après avoir restauré les bases de données de contenu.

    Pour ce faire, j'ai réalisé un script PowerShell que vous pourrez trouver ici --> https://github.com/sschorgen/PowerShell/tree/master/SP10_Migrate-SPFromDomain

    Ce script a été conçu est exécuté sur SharePoint 2010.

    Il est indispensable de constituer 2 fichiers CSV :

    • 1 permettant d'effectuer la correspondance entre les groupes de l'ancien domaine et du nouveau
    • 1 permettant d'effectuer la correspondance entre les utilisateurs de l'ancien domaine et du nouveau

    Un exemple de fichier CSV contenant les correspondances groupes:

    Un exemple de fichier CSV contenant les correspondances utilisateurs :

    Le script est constitué d'une partie effectuant la migration des groupes :

    ForEach($Group in $Groups) {
    Write-Host " --- MIGRATING GROUP " $Group.oldDomain "-->" $Group.newDomain -ForegroundColor Yellow -NoNewLine
    $farm.MigrateGroup($Group.oldDomain, $Group.newDomain)
    Write-Host " OK !" -ForegroundColor Green
    }

    Et d'une autre partie responsable de la migration des utilisateurs :

    ForEach($User in $Users) {
    Write-Host " --- MIGRATING USER " $User.oldDomain "-->" $User.newDomain -ForegroundColor Yellow -NoNewLine
    $farm.MigrateUserAccount($User.oldDomain, $User.newDomain, $false)
    Write-Host " OK !" -ForegroundColor Green
    }

    Une fois les 2 fichiers CSV constitués, il ne vous reste plus qu'à exécuter la commande suivante :

    .\SP10_Migrate-SPUserAndGroupFromDomain.ps1 -UserMappingsCSV "D:\Scripts\users_to_migrate.csv" - GroupMappingsCSV "D:\Scripts\groups_to_migrate.csv"
    Bonne(s) migration(s) ;)
    Pour rappel : Ce post fait parti d'une série de plusieurs posts dédiés à la migration SharePoint de domaine
    • 12/9/2017

    [PowerShell] Deploy Work Folder Feature on Windows Server

    Hello everyone,

    Today I'll show you how to deploy the Windows Server Feature called "Work Folder" using PowerShell :

    1. Launch PowerShell as an administrator
    2. Run the following cmdlet : Install-WindowsFeature FS-SyncShareService

    • 31/8/2017

    [PowerShell] Déployer la fonctionnalité serveur dossiers de travail en utilisant PowerShell

    Hello tout le monde,

    Aujourd'hui une petite commande PowerShell permettant de déployer la fonctionnalité Windows Server "Dossier de travail" en PowerShell :

    1. Lancer une console PowerShell en tant qu'administrateur
    2. Exécuter la commande suivante : Install-WindowsFeature FS-SyncShareService

    • 16/8/2017

    [SHAREPOINT 2010 - INFOPATH] Error Data adapter failed during OnLoad: The remote server returned an error: (500) Internal Server Error

    Hi everybody,

    After a SharePoint 2010 domain migration, we had an error when creating or reading an Infopath form. The error said "An error occured while trying to connect to a Web Service". We had this error in the ULS logs :

    Data adapter failed during OnLoad: The remote server returned an error: (500) Internal Server Error.  Server was unable to process request. ---> Specified argument was out of the range of valid values. The following query failed: GetUserProfileByName (User: 0#.w|DOMAIN\USER, Form Name: Template012345, IP: , Connection Target: , Request: http://link_to_my_site/AllItems.aspx, Form ID: urn:schemas-microsoft-com:office:infopath:Template012345:-dataFormSolution Type: DataAdapterException, Exception Message: The remote server returned an error: (500) Internal Server Error.  Server was unable to process request. ---> Specified argument was out of the range of valid values.  Parameter name: lcid The remote server returned an error: (500) Internal Server Error.)

    In this environment, SharePoint sites were accessible in French and in English. We only had this error for English users. To resolve this issue, we simply add the English language to the Working Language setting of the Managed Metadata Service Application.

    • 15/8/2017

    [SHAREPOINT 2010 - INFOPATH] Erreur Data adapter failed during OnLoad: The remote server returned an error: (500) Internal Server Error

    Hier, lors d'une migration de domaine d'un SharePoint 2010, nous nous sommes retrouvés devant une erreur indiquant qu'il était impossible de se connecter au WebService lors de la création ou la lecture d'un formulaire InfoPath. Les log que nous avions dans l'ULS étaient les suivants :

    Data adapter failed during OnLoad: The remote server returned an error: (500) Internal Server Error.  Server was unable to process request. ---> Specified argument was out of the range of valid values. The following query failed: GetUserProfileByName (User: 0#.w|DOMAIN\USER, Form Name: Template012345, IP: , Connection Target: , Request: http://lien_vers_mon_site/AllItems.aspx, Form ID: urn:schemas-microsoft-com:office:infopath:Template012345:-dataFormSolution Type: DataAdapterException, Exception Message: The remote server returned an error: (500) Internal Server Error.  Server was unable to process request. ---> Specified argument was out of the range of valid values.  Parameter name: lcid The remote server returned an error: (500) Internal Server Error.)

    Dans le cadre de cet environnement, les sites SharePoint étaient accessible en Français et en Anglais et nous avions cette erreur uniquement lorsque des utilisateurs anglophones accédaient aux formulaires. La résolution de ce problème a consisté à ajouter la langue Anglaise dans les Working Language du service de métadonnées gérées. Suite à cela, les utilisateurs anglophones pouvaient correctement ajouter et lire les formulaires InfoPath sans aucunes erreurs.

    • 16/5/2017

    [POWERSHELL] Office 365 For Admin

    Hello tout le monde,

    Je suis en train de développer un (petit qui deviendra gros ^_^) script PowerShell permettant d'effectuer plusieurs tâches d'administration / exploitation en PowerShell. Pour le moment, voici les éléments développés :

    • Exporter tous les utilisateurs vers un fichier CSV
    • Exporter les groupes de distribution & de sécurité vers un fichier CSV (avec ou sans les membres)
    • Exporter tous les groupes Office 365 vers un fichier CSV (avec ou sans les membres)
    • Exporter les licences vers un fichier CSV
    • Exporter les domaines vers un fichier CSV
    • Afficher un utilisateur à l'écran (à partir de son UPN)
    • Afficher les membres d'un groupe à l'écran (à partir de son UPN)
    • Activer / Désactiver la possibilité de créer des groupes Office 365 pour les utilisateurs

    C'est la première version d'un script (composé de plusieurs modules) qui est en cours de développement et pour lequel les fonctionnalités seront ajoutés au fur et à mesure (je fais cela sur mon temps libre ^_^).

    Voici déjà les éléments qui seront présents dans la prochaine itération (je suis actuellement en train de développer ces fonctions) :

    • Exporter la liste des BAL utilisateurs (adresse mail, alias, quotas, ...) vers un fichier CSV
    • Afficher une BAL utilisateur à l'écran
    • Exporter les listes de distribution vers un fichier CSV (avec et sans les membres)
    • Afficher les BAL membres d'une liste de distribution à l'écran
    • Exporter les BAL partagées vers un fichiers CSV (avec et sans les appartenances)
    • Afficher les appartenances d'une BAL partagée
    • Désactiver / Activer la fonctionnalité boîte aux lettres prioritaire et Clutter Mailbox

    Dans le futur, j'y ajouterai :

    • Un module de gestion des utilisateurs (ajout / modification / suppression)
    • Un module de gestion des groupes (ajout / modification / suppression)
    • Un module de gestion des BAL / BAL partragées / listes de distribution (ajout / modification / suppression)
    • Un module de statistique (consommation OneDrive, domaines vers lesquels le plus de mails sont envoyés, les top senders et top receivers, ...)

    N'hésitez pas à me faire des retours sur des fonctionnalités que vous aimeriez bien voir apparaître dans cet outil. Le but étant d'en faire une boîte à outil complète d'administration / exploitation Office 365. N'hésitez également pas à me faire des retours sur les bugs que vous pourriez rencontrer ;) Merci !

    Le lien GitHub : c'est par ici

    1) COMMENT UTILISER LE SCRIPT

    Après avoir récupérer le pack contenant plusieurs dossiers et fichiers, placez-vous dans le dossier les contenant et exécutez le script o365_4_admin.ps1.

    Un menu apparaîtra alors à l'écran. Entrez 2 pour directement quitter le script ou 1 pour vous authentifier sur votre tenant et pouvoir accéder aux fonctionnalités. Suite à cela, une interface vous permettant de renseigner l'identifiant et le mot de passe d'un admin de votre tenant apparaît.

    Une fois authentifié, vous arrivez sur une nouveau menu. Entrez alors 1 afin d'accéder aux fonctionnalités Utilisateurs et Licences ou 99 pour Quitter. C'est à ce niveau que, dans de prochaines itérations, des menus "Exchange Online", "Statistiques", ... apparaîtront.

    Après avoir entré 1, un dernier menu apparaît à l'écran vous permettant d'effectuer l'action désirée. Dans le cas de ce billet de blog, j'ai décidé d'exporter tous les utilisateurs vers un fichier CSV en entrant 1. Le nom du fichier contiendra le nom de votre tenant et sera stocké dans le dossier 00-reports.

    Le lien GitHub : c'est par ici

    Tel qu'indiqué plus haut, n'hésitez pas à me faire des remontées sur ce script :)

    • 15/12/2016

    [PowerShell] Configurer PSGallery comme source de confiance

    Hello tout le monde,

    Je fais pas mal de DSC en ce moment et il faut avouer qu'à chaque fois qu'on installe un module venant de PSGallery, il y a une demande de confirmation un peu ennuyeuse qui indique que nous installons un module venant d'un dépôt qui n'est pas de confiance ...

    Si comme moi vous voulez ajouter PSGallery comme dépôt de confiance, tapez alors la commande suivante : Set-PSRepository -Name PSGallery -InstallationPolicy Trusted.

    Lors de vos prochaines installations de modules en provenance de PSGallery, vous n'aurez plus cette demande de confirmation.

    • 14/12/2016

    [PowerShell - DSC] Configurer le nom d'une machine et son IP

    Hello tout le monde,

    Voici mon premier script DSC (tout simple pour commencer :P). Ce dernier s'appuie sur le module xNetworking et xComputerManagement. Il permet de configurer le nom de votre machine ainsi que son IP, DNS, passerelle par défaut & masque sous réseau.

    Le script dispose de  paramètres obligatoires :

    • ComputerName : Le nom que vous voulez assigner à votre ordinateur
    • MofFilePath : Le chemin au niveau duquel vous voulez stocker les fichiers MOF (le script vérifie que le dossier existe et le crée si ce n'est pas le cas)

    Le nom du noeud, le nom de l'interface réseau à configurer, l'IP, le masque de sous-réseau, le type d'IP (v4 ou v6), la passerelle par défaut et les serveurs DNS se configurent au niveau du hastable MyData (à la fin du script).

     

    Le code :

     Configuration ConfigureComputer
    {
    param
    (
    [Parameter(Mandatory=$True)][string]$ComputerName,
    [Parameter(Mandatory=$True)][string]$MofFilePath
    )

    # DSC Resources import

    Import-DscResource -Module xNetworking
    Import-DscResource -module xComputerManagement

    Node $AllNodes.Nodename
    {

    LocalConfigurationManager
    {
    ActionAfterReboot = 'ContinueConfiguration'
    ConfigurationMode = 'ApplyOnly'
    RebootNodeIfNeeded = $true
    }

    File DSCFolder
    {
    Type = 'Directory'
    DestinationPath = $MofFilePath
    Ensure = "Present"
    }

    xComputer NewNameAndWorkgroup
    {
    Name = $ComputerName
    }

    xIPAddress IPAddress
    {
    IPAddress = $Node.IpAddress
    InterfaceAlias = $Node.Interface
    PrefixLength = $Node.IPPrefix
    AddressFamily = $Node.IPAddressFamily
    }

    xDnsServerAddress DnsServer
    {
    InterfaceAlias = $Node.Interface
    AddressFamily = $Node.IPAddressFamily
    Address = $Node.DnsServers
    }

    xDefaultGatewayAddress DefaultGtw
    {
    InterfaceAlias = $Node.Interface
    AddressFamily = $Node.IPAddressFamily
    Address = $Node.Gateway
    }
    }
    }

    $MyData =
    @{
    AllNodes = @(
    @{
    NodeName = 'localhost'
    IpAddress = '192.168.200.10'
    Interface = 'Ethernet'
    IPPrefix = 24
    IPAddressFamily = 'IPV4'
    DnsServers = '8.8.8.8','8.8.4.4'
    Gateway = '192.168.200.254'
    }
    )
    }

     

    Pour démarrer votre configuration : 

    ConfigureComputer -ComputerName "SRV-16-DEMO" -MofFilePath "C:\_DSC" -ConfigurationData $MyData -OutputPath "C:\_DSC"
    Start-DscConfiguration -Wait -Force -Verbose -Path "C:\_DSC\ConfigureComputer"

     

    Si vous voulez télécharger le code c'est par ici :)

    • 9/12/2016

    [PowerShell] Télécharger les prérequis,CU et packs de langues pour l'installation d'Office Online Server 2016

    [UPDATE - 13/12/2016] : Le script a été mis à jour. Il permet maintenant de récupérer les CU Office Online Server également. Le fichier de réponse XML contient maintenant une section "CumulativeUpdates".

    Je suis en train de déployer du SharePoint 2016 en ce moment avec Office Online Server 2016. Comme pour chacune de mes installations, j'essaye de scripter le plus d'éléments possible. Ainsi, pour télécharger les prérequis et les packs de langues d'OOS, j'ai décidé d'effectuer un script de téléchargement (un comme celui que j'ai fait pour télécharger les prérequis, CU et packs de langues pour SP16). Le script fait les éléments suivants :

    • Le téléchargement des prérequis à installer sur le serveur
    • Le téléchargement du pack de langue fr-fr, es-es, it-it ou en-us
    • Mise en place de paramètres par défaut pour les dossiers de stockage et le pack de langue à télécharger

     

    Etant en Nouvelle-Calédonie, j'effectue toutes mes installations en Anglais en appliquant le pack de langue Français par la suite. Le pack de langue téléchargé par défaut est donc le fr-fr. Le dossier par défaut de téléchargement des éléments est C:\_OOS16SOURCES.

    Le script est composé d'un fichier .ps1 et d'un fichier XML contenant les URL de tous les éléments à télécharger. Si vous exécutez le script .ps1 sans paramètres, il faut que les 2 fichiers soient situés dans le même dossier.

     

    Un exemple d'utilisation du script : .\OOS16_Download-PrerequisitesLP.ps1

     

     

    Pour télécharger le script, c'est sur mon GitHub.

     

    Pour rappel, avant d'installer Office Online Server, il faut installer des prérequis Windows Server. Pour les installer en PowerShell, tapez la commande suivante : 

    Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation

    • 7/12/2016

    [PowerShell] Télécharger les prérequis, CU et packs de langues pour l'installation de SharePoint 2016

    [UPDATE - 10/10/2017] : Le script a été mis à jour. Ajout du CU de Juin, Juillet et Août 2017 dans le fichier XML. Le CU par défaut maintenant téléchargé est celui d'Août 2017. La dernière version d'AutoSPInstaller a également été intégré dans cette mise à jour.

    [UPDATE - 22/05/2017] : Le script a été mis à jour. Ajout du CU d'Avril 2017 et Mai 2017 dans le fichier XML. Le CU par défaut maintenant téléchargé est celui de Mai 2017. La dernière version d'AutoSPInstaller a également été intégré dans cette mise à jour.

    [UPDATE - 23/04/2017] : Le script a été mis à jour. Ajout du CU de Mars 2017 dans le fichier XML. Le CU par défaut maintenant téléchargé est celui de Mars 2017

    Je suis en train de déployer du SharePoint 2016 en ce moment. Comme pour chacune de mes installations, j'essaye de scripter le plus d'éléments possible. Ainsi, pour télécharger les prérequis, les cumulatives updates et les packs de langues, je me suis fortement inspiré de AutoSPSourceBuilder en ne conservant et n'adaptant que les parties nécessaires dans le contexte de mes installations :

    • Uniquement du SharePoint 2016
    • Uniquement les CU SharePoint 2016
    • Uniquement les packs de langue fr-fr, es-es, it-it et en-us
    • Mise en place de paramètres par défaut pour les dossiers de stockage, le CU à télécharger et le pack de langue à télécharger

     

    Etant en Nouvelle-Calédonie, j'effectue toutes mes installations en Anglais en appliquant le pack de langue Français par la suite. Le pack de langue téléchargé par défaut est donc le fr-fr. Le dossier par défaut de téléchargement des éléments est C:\_SP16SOURCES et le CU téléchargé par défaut est celui d'Août 2017 (à date de mise à jour de cet article).

     

    Le script est composé d'un fichier .ps1 et d'un fichier XML contenant les URL de tous les éléments à télécharger. Si vous exécutez le script .ps1 sans paramètres, il faut que les 2 fichiers soient situés dans le même dossier.

     

    Un exemple d'utilisation du script : .\SP16_Download-PrerequisitesCULP.ps1

    Les téléchargements seront stockés dans les dossiers suivants (faisant parti du dossier AutoSPInstaller extrait en tout début de script)

    • SP\2016\Updates
    • SP\2016\LanguagePacks
    • SP\2016\SharePoint\Prerequisites

     

    Un exemple autre exemple d'utilisation du script : .\SP16_Download-PrerequisitesCULP.ps1 -XmlFilePath "SP16DownloadConfiguration.xml" -DestinationFolder "D:\_sp16" -Language "fr-fr" -CumulativeUpdate "November 2016"

     Pour télécharger le script c'est sur mon GitHub.

    Ce script sera mis à jour au fil du temps avec les nouveaux CU, les SP (Service Packs), ...

     

    Stay Tuned !

    • 9/11/2016

    [SharePoint] Modify SharePoint Web Application Name using PowerShell

    Hello,

     

    One of my client needed to rename one of its web application. For the exemple, the name of the web application was "Demi" and he wanted to rename it to "Demo". To modify the name of the web application, use the following commands :

    $webApplication=Get-SPWebApplication | where {$_.Name -eq "Demi"}
    $webApplication.Name="Demo"
    $webApplication.Update()

    To verify that the name has been correctly modify, you can use the following command : Get-SPWebApplication | where {$_.Name -eq "Demo"}

    • 9/11/2016

    [SharePoint] Modifier le nom d'une application web en PowerShell

    Bonjour tout le monde,

     

    Lors d'une de mes dernières prestations, une application web SharePoint avait été déployée avec le mauvais nom. Pour l'exemple, on va dire qu'elle était nommée "Demi" au lieu de "Demo". Voici les commandes PowerShell à taper afin de modifier le nom d'une application web :

    $webApplication=Get-SPWebApplication | where {$_.Name -eq "Demi"}
    $webApplication.Name="Demo"
    $webApplication.Update()

    Une fois ces commandes entrées, nous pouvons vérifier le nom de l'application web en PowerShell avec la commande suivante : Get-SPWebApplication | where {$_.Name -eq "Demo"}

    • 23/10/2016

    [PowerShell] Deploy ADDS on a Server Core

    Hello,

    Today I'm writing a little article on how to deploy ADDS on a server core.

     

    Installation of the role

    If you want to deploy ADDS, you need to enter the following command : Add-WindowsFeature -Name "ad-domain-services" -IncludeAllSubFeature

    Deployment of the 1st domain controller in the Forest

    To deploy you first domain controller, you need to create some variables. They will contained some mandatory values needed by the PowerShell command (for more information --> https://technet.microsoft.com/en-us/library/hh974720(v=wps.630).aspx) :


    $CreateDnsDelegation = $false
    $DomainName = "demo.lan"
    $NetbiosName = "DEMO"
    $NTDSPath = "C:\Windows\NTDS"
    $LogPath = "C:\Windows\NTDS"
    $SysvolPath = "C:\Windows\SYSVOL"
    $DomainMode = "WinThreshold"
    $InstallDNS = $true
    $ForestMode = "WinThreshold"
    $NoRebootOnCompletion = $false
    $SafeModeClearPassword = "P@$$w0rd"
    $SafeModeAdministratorPassword = ConvertTo-SecureString $SafeModeClearPassword -AsPlaintext -Force

    The next step is to execute the following command (it will create your domain and promote your server as a domain controller) : 

    $forest = Install-ADDSForest -CreateDnsDelegation:$CreateDnsDelegation `
    -DomainName $DomainName `
    -DatabasePath $NTDSPath `
    -DomainMode $DomainMode `
    -DomainNetbiosName $NetbiosName `
    -ForestMode $ForestMode `
    -InstallDNS:$InstallDNS `
    -LogPath $LogPath `
    -NoRebootOnCompletion:$NoRebootOnCompletion `
    -SysvolPath $SysvolPath `
    -SafeModeAdministratorPassword $SafeModeAdministratorPassword `
    -Force:$true

    • 23/10/2016

    [PowerShell] Déployer le rôle ADDS sur un Server Core

    Bonjour tout le monde,

    Un petit blog post sur comment installer ADDS sur un server Core (déploiement de la fonctionnalité & création du 1er contrôleur de domaine de la forêt).

     

    Déploiement du rôle

    Afin de déployer le rôle Active Directory Domain Services , il suffit de taper la commande suivante : Add-WindowsFeature -Name "ad-domain-services" -IncludeAllSubFeature

    Déploiement du 1er contrôleur de domaine

    Afin de pouvoir déployer notre premier contrôleur de domaine de la forêt, il nous faut mettre en place certaines variables indispensables à la bonne exécution de la commande PowerShell (pour plus de détail sur ces dernières --> https://technet.microsoft.com/en-us/library/hh974720(v=wps.630).aspx :


    $CreateDnsDelegation = $false
    $DomainName = "demo.lan"
    $NetbiosName = "DEMO"
    $NTDSPath = "C:\Windows\NTDS"
    $LogPath = "C:\Windows\NTDS"
    $SysvolPath = "C:\Windows\SYSVOL"
    $DomainMode = "WinThreshold"
    $InstallDNS = $true
    $ForestMode = "WinThreshold"
    $NoRebootOnCompletion = $false
    $SafeModeClearPassword = "P@$$w0rd"
    $SafeModeAdministratorPassword = ConvertTo-SecureString $SafeModeClearPassword -AsPlaintext -Force

    Une fois ces variables créées, nous pouvons installer notre premier contrôleur de domaine de la forêt en tapant la commande suivante :

    $forest = Install-ADDSForest -CreateDnsDelegation:$CreateDnsDelegation `
    -DomainName $DomainName `
    -DatabasePath $NTDSPath `
    -DomainMode $DomainMode `
    -DomainNetbiosName $NetbiosName `
    -ForestMode $ForestMode `
    -InstallDNS:$InstallDNS `
    -LogPath $LogPath `
    -NoRebootOnCompletion:$NoRebootOnCompletion `
    -SysvolPath $SysvolPath `
    -SafeModeAdministratorPassword $SafeModeAdministratorPassword `
    -Force:$true