PowerShell pour gérer vos environnements

Introduction

Nous avons vu précédemment que PowerShell comportait de nombreuses commandes permettant de gérer un poste de travail, qu’il soit local ou distant. PowerShell permet d’automatiser pratiquement toutes les tâches souhaitées.

Nous avons également vu dans le chapitre Les modules, que ceux-ci permettent une gestion encore plus simple à l’aide d’un nombre accru de cmdlets.

PowerShell ne permet pas uniquement de gérer un environnement local tel que votre poste de travail mais également des environnements plus larges, tels que votre Active Directory, Entra ID, Intune, MECM…

Pour cela, différents modules existants offrent des cmdlets pour gérer facilement des infrastructures.

Dans ce chapitre nous allons voir comment gérer différents environnements (Active Directory, MECM, Entra ID, Intune) uniquement avec PowerShell.

Les risques

Dans les différents exemples que nous allons évoquer, nous allons utiliser des modules existants.

En règle générale, l’utilisation des modules est préconisée, car ces derniers sont généralement fournis par Microsoft et simplifient considérablement l’interaction avec vos environnements.

Un inconvénient de l’utilisation de modules est que ceux-ci peuvent évoluer, voire être dépréciés. Un module déprécié signifie que celui-ci risque de ne plus fonctionner après une période donnée.

Il convient donc de rester attentif et d’effectuer une veille régulière afin d’anticiper les éventuels changements affectant les modules utilisés.

PowerShell et Active Directory

1. Active Directory, qu’est-ce que c’est ?

Active Directory, plus communément appelé AD, est un service d’annuaire de Microsoft. Il s’agit d’un service de gestion permettant de stocker les informations relatives aux utilisateurs, ordinateurs, imprimantes, etc., gérés au sein de votre organisation.

Généralement lorsqu’un utilisateur arrive dans une entreprise, un compte AD est créé, lui permettant de se connecter au domaine et d’accéder aux ressources de l’entreprise.

Il peut donc être utile d’utiliser PowerShell pour automatiser différentes tâches récurrentes et chronophages :

  • création d’un compte utilisateur ;

  • réinitialisation d’un mot de passe ;

  • verrouillage d’un compte utilisateur ou machine ;

  • déverrouillage d’un compte utilisateur ou machine ;

  • récupération d’infos sur un poste ou utilisateur ;

  • ajout dans un ou des groupe(s).

2. Comment interagir avec PowerShell ?

Pour gérer votre Active Directory avec PowerShell, le module à installer et à utiliser se nomme, tout simplement, ActiveDirectory. Il s’agit d’un module créé par Microsoft apparu la première fois sous Windows Server 2008 R2. Il est automatiquement installé sur les serveurs après ajout du rôle contrôleur de domaine.

Il existe d’autres modules permettant d’interagir avec Active Directory, mais ceux-ci n’étant pas gérés par Microsoft, nous éviterons d’en parler ici.

3. Installer le module approprié

a. Sur Windows Server

Il faut tout d’abord installer la fonctionnalité Windows :

Add-WindowsFeature -Name "RSAT-AD-PowerShell" 
-IncludeAllSubFeature 

Il faudra ensuite l’importer à l’aide de la cmdlet Import-Module :

Import-Module ActiveDirectory 

b. Sur Windows 10

Il faut tout d’abord installer une fonctionnalité facultative de Windows. Celle-ci peut facilement s’installer avec PowerShell en utilisant un compte administrateur local :

Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online 

4. Que contient ce module ?

Avant d’utiliser un module PowerShell, il est nécessaire de comprendre...

PowerShell et MECM (Configuration Manager)

1. MECM, qu’est-ce que c’est ?

MECM (Microsoft Endpoint Configuration Manager), autrefois appelé SCCM, est un produit de la famille System Center de Microsoft. Il s’agit d’une suite logicielle permettant de gérer un parc informatique associée avec votre Active Directory.

Avec MECM, il est possible entre autres de :

  • déployer des OS sur les postes au travers d’une Task Sequence ;

  • déployer des drivers sur vos postes ;

  • déployer des applications sur vos postes ;

  • sécuriser vos postes ;

  • inventorier vos postes.

2. Comment interagir avec PowerShell ?

Pour effectuer des actions sur votre environnement MECM au travers de PowerShell, un module existe directement depuis la console.

Ce module se nomme ConfigurationManager.

3. Installer le module approprié

a. Utiliser le module depuis la console MECM

Le module est déjà installé au travers de la console MECM.

Il est accessible depuis la console en cliquant sur la flèche en haut, puis sur Connect via Windows PowerShell.

images/N40RI01.png

Une console PowerShell s’ouvre pour permettre l’utilisation des cmdlets de gestion des postes et collections.

b. Importer directement le module

Il est également possible d’utiliser ce module sans passer par la console MECM.

Il faut pour cela importer le module dans PowerShell en utilisant la commande suivante :

Import-Module ConfigurationManager 

L’erreur ci-dessous peut s’afficher :

images/N40RI02.png

Ce message signifie que le fichier .psm1 est invalide ou absent dans le dossier des modules PowerShell.

4. Que contient ce module ?

Avant d’utiliser un module PowerShell, il est nécessaire de comprendre ce que celui-ci contient.

Il conviendra donc d’utiliser la cmdlet get-command afin de lister les commandes disponibles dans le module :

PS get-command -module ConfigurationManager 
 
CommandType     Name     Version    Source 
-----------...

PowerShell et Entra ID

1. Entra ID, qu’est-ce que c’est ?

Nous avons précédemment vu ce qu’était Active Directory.

Entra ID, précédemment nommé Azure Active Directory, est un service d’annuaire dans le Cloud, équivalent à un Active Directory hébergé en ligne.

Il permet de gérer vos utilisateurs, ordinateurs, applications, authentifications et bien d’autres encore.

2. Comment interagir avec PowerShell ?

Durant de nombreuses années, un module permettait d’interagir avec Entra ID au travers de PowerShell. Celui-ci se nommait AzureAD.

Depuis le 30 mars 2024, ce module a été déprécié :

https://techcommunity.microsoft.com/blog/microsoft-entra-blog/important-update-deprecation-of-azure-ad-powershell-and-msonline-powershell-modu/4094536

Microsoft a mis à disposition un nouveau module nommé Microsoft.Entra. Ce module permet, comme son prédécesseur, d’interagir avec Entra ID via PowerShell.

3. Installer le module approprié

Ce module est disponible depuis la PowerShell Gallery.

Comme tout module, celui-ci s’installe via la cmdlet Install-Module :

Install-Module -Name Microsoft.Entra -AllowPrerelease 

Ce module se compose de différents sous-modules.

4. Que contient ce module ?

Avant d’utiliser un module PowerShell, il est nécessaire de comprendre ce que celui-ci contient. Il convient donc d’utiliser la cmdlet get-command afin de lister les commandes disponibles dans le module :

PS C:\Windows> get-command -module "Microsoft.Entra.*" 
 
CommandType     Name     Version    Source 
-----------     ----     -------    ------ 
Alias           Get-EntraDirectorySubscription                     1.0.4      Microsoft.Entra.DirectoryManagement 
Alias           Get-EntraObjectByObjectId                          1.0.4      Microsoft.Entra.DirectoryManagement 
Function        Add-EntraAdministrativeUnitMember                  1.0.4      Microsoft.Entra.DirectoryManagement ...

PowerShell et Intune

1. Intune, c’est quoi ?

Nous avons vu précédemment que MECM permettait de gérer vos postes dans un environnement on-premise.

Intune est la suite logique de MECM, mais dans le Cloud, bien que certaines fonctionnalités ne soient pas encore disponibles.

Intune permet ainsi de :

  • déployer des postes au travers de Autopilot ;

  • déployer des applications ;

  • exécuter des scripts ;

  • faire de la remédiation via PowerShell ;

  • effectuer des configurations de postes.

2. Comment interagir avec PowerShell ?

Le module recommandé par Microsoft pour interagir avec Intune depuis PowerShell se nomme Microsoft.Graph.

Celui-ci, comme son nom l’indique, utilise l’API Graph en arrière-plan lors de chaque utilisation de cmdlet.

3. Installer le module approprié

Ce module est disponible depuis la PowerShell Gallery. Comme tout module, celui-ci s’installe via la cmdlet Install-Module :

Install-Module -Name Microsoft.Graph 

Ce module se compose de différents sous-modules.

4. Que contient ce module ?

Avant d’utiliser un module PowerShell, il est nécessaire de comprendre ce que celui-ci contient. Il convient donc d’utiliser la cmdlet get-command afin de lister les commandes disponibles dans le module :

PS C:\> get-command -module "microsoft.graph.*" -top 10 
 
CommandType     Name                        Version    Source 
-----------     ----                        -------    ------ 
Function        Add-MgApplicationKey        0.0        Microsoft.Graph.Applications 
Function        Add-MgApplicationPassword   0.0        Microsoft.Graph.Applications 
Function        Add-MgChatMember...