POWERSHELL


POWERSHELL

Introduction

A première vue, si vous êtes administrateur système ou développeur, vous connaissez certainement PowerShell, une plateforme de script flexible et puissante qui vous permet d’automatiser de nombreuses tâches informatiques courantes. Mentionnons qu’il a été conçue par Microsoft pour remplacer l’interface en ligne de commande (CMD) de Windows. Effectivement, PowerShell est une solution de ligne de commande lancée en 2006 avec Windows XP et Windows Server 2003 et de ce fait, sa popularité auprès des professionnels de l’informatique a rapidement grandi. En conséquence, PowerShell est également disponible sur macOS et Linux grâce à PowerShell Core, qui prend en charge les commandes en ligne de commande classiques ainsi que les scripts.

En premier lieu, nous allons examiner les capacités de PowerShell en matière de Scripting qui sont un moyen efficace d’automatiser les tâches complexes. Puis nous nous intéresserons à sa gestion de l’Active Directory notamment avec l’installation du module AD qui offre encore plus de possibilités. Pour cela, nous examinerons les Cmdlets du module AD les plus couramment utilisés. Puis nous finirons par voir la gestions des processus, services et fichiers.

PowerShell et les scripts

Pour commencer, l’un des principaux avantages de PowerShell est sa capacité à automatiser les tâches. Par exemple, il est possible de créer des scripts pour automatiser la configuration d’un serveur, la gestion des utilisateurs, la sauvegarde de données et est de plus en plus utilisé pour automatiser les tâches dans les environnements de cloud et de virtualisation.

Autrement dit, le Scripting est une fonctionnalité clé de PowerShell qui permet d’automatiser des tâches complexes en utilisant des scripts. Les scripts PowerShell sont écrits en utilisant la syntaxe de PowerShell et peuvent, de ce fait, inclure des boucles, des conditions, des fonctions et d’autres constructions de programmation courantes. De plus, ils peuvent être enregistrés et exécutés à nouveau à tout moment, ce qui les rend idéaux pour l’automatisation répétitive des tâches.

Un exemple simple de script d’automatisation en PowerShell est le script de sauvegarde de fichiers. En effet, ce script peut être conçu pour copier automatiquement les fichiers importants d’un dossier vers un autre dossier de sauvegarde à des intervalles réguliers. Le script peut être programmé pour s’exécuter tous les jours à une heure spécifique et peut être enregistré pour s’exécuter automatiquement chaque jour sans intervention de l’utilisateur. Cela permet de garantir que les fichiers importants ne sont jamais perdus en cas de défaillance du système et sont toujours disponibles pour une restauration en cas de besoin.

Voici un exemple de script :

Script powershell de copie de données d'une source vers une destination

Ce script utilise les cmdlets Get-ChildItem et Copy-Item pour copier les fichiers du dossier $source au dossier $destination. Le paramètre -Recurse permet de copier les sous-dossiers également. Enfin, le cmdlet Write-Output affiche un message de confirmation à la fin de la sauvegarde.

Pour planifier ce script pour s’exécuter tous les jours à une heure spécifique, vous pouvez utiliser l’outil de planification de tâches intégré à Windows.

PowerShell et l’Active Directory

PowerShell permet nativement la gestion de l’Active Directory, mais l’installation du module AD apporte encore plus de commodité pour les administrateurs système. Avec ce module, les administrateurs peuvent automatiser aisément des tâches telles que la création de nouveaux utilisateurs, la modification de groupes et la recherche d’objets Active Directory. Il peut être très pratique pour les opérations de maintenance de l’AD, ainsi que pour les déploiements. Les tâches administratives quotidiennes sont simplifiées grâce à la puissance et à la flexibilité offertes par PowerShell. Pour cela il suffit d’ouvrir PowerShell et de taper le code suivant :

code powershell : Import-Module ActiveDirectory qui permet d'installer le module AD

Cela permet de charger le module Active Directory dans PowerShell, vous permettant ainsi d’utiliser les cmdlets associés pour la gestion. Dans la partie suivante, nous allons détailler les plus importants:

Voici les Cmdlets du module AD les plus utilisés :

Get-ADUser

Cette commande permet de récupérer les informations d’un utilisateur spécifique de l’Active Directory. Par exemple, pour afficher les informations de l’utilisateur « JohnDoe »:

Code powershell : Get-ADUser -Identity JohnDoe. New-ADUser

New-ADUser

Cette commande permet de créer un nouvel utilisateur dans l’Active Directory. Par exemple, pour créer un nouvel utilisateur nommé « JaneDoe » avec un mot de passe « password », vous pouvez utiliser la commande :

code powershell : New-ADUser -Name "JaneDoe" -SamAccountName "JaneDoe" -GivenName "Jane" -Surname "Doe" -AccountPassword (Read-Host -AsSecureString "Password") -Enabled $true

Set-ADUser

Cette commande permet de mettre à jour les informations d’un utilisateur existant dans l’Active Directory. Par exemple, pour changer le nom complet de l’utilisateur « JohnDoe » en « John Smith », vous pouvez utiliser la commande :

code powershell : Set-ADUser -Identity JohnDoe -GivenName John -Surname Smith

Remove-ADUser

Cette commande permet de supprimer un utilisateur de l’Active Directory. Par exemple, pour supprimer l’utilisateur « JaneDoe », vous pouvez utiliser la commande :

code powershell : Remove-ADUser -Identity JaneDoe -Confirm:$false

Get-ADGroup

Cette commande permet de récupérer les informations d’un groupe spécifique de l’Active Directory. Par exemple, pour afficher les informations du groupe « Marketing », vous pouvez utiliser la commande :

code powershell : Get-ADGroup -Identity "Marketing"

New-ADGroup

Cette commande permet de créer un nouveau groupe dans l’Active Directory. Par exemple, pour créer un nouveau groupe nommé « HR » avec un type de groupe « Security », vous pouvez utiliser la commande :

 code powershell : New-ADGroup -Name "HR" -GroupScope "Security" -GroupCategory "Security"

Add-ADGroupMember

Cette commande permet d’ajouter un utilisateur à un groupe existant dans l’Active Directory. Par exemple, pour ajouter l’utilisateur « JohnDoe » au groupe « HR », vous pouvez utiliser la commande :

code powershell : Add-ADGroupMember -Identity "HR" -Members "JohnDoe"

Remove-ADGroupMember

Cette commande permet de supprimer un utilisateur d’un groupe existant dans l’Active Directory. Par exemple, pour supprimer l’utilisateur « JaneDoe » du groupe « HR », vous pouvez utiliser la commande :

code powershell : Remove-ADGroupMember -Identity "HR" -Members "JaneDoe"

Get-ADOrganizationalUnit

Cette commande permet de récupérer les informations d’une unité d’organisation spécifique de l’Active Directory. Par exemple, pour afficher les informations de l’unité d’organisation « IT », vous pouvez utiliser la commande :

code powershell : Get-ADOrganizationalUnit -Identity "IT"

New-ADOrganizationalUnit

Cette commande permet de créer une nouvelle unité d’organisation dans l’Active Directory. Par exemple, pour créer une nouvelle unité d’organisation nommée « Finance », vous pouvez utiliser la commande :

code powershell : New-ADOrganizationalUnit -Name "Finance"

Move-ADObject

Cette commande permet de déplacer un objet (utilisateur, groupe, unité d’organisation) dans l’Active Directory. Par exemple, pour déplacer l’utilisateur « JohnDoe » de l’unité d’organization « IT » à « Finance », vous pouvez utiliser la commande :

code powershell : Move-ADObject -Identity "JohnDoe" -TargetPath "OU=Finance,DC=yourdomain,DC=com"

PowerShell et la gestion des services et processus

En utilisant PowerShell, les administrateurs système peuvent automatiser efficacement les tâches courantes liées à la gestion des processus et des services sur un système Windows. L’avantage est qu’il offre une interface de ligne de commande qui peut être utilisée pour effectuer rapidement des actions telles que l’activation ou la désactivation de processus, ainsi que l’arrêt ou le démarrage de services. Bien entendu, cela peut économiser beaucoup de temps et d’efforts aux administrateurs système, car ils n’ont plus besoin de faire ces tâches manuellement. Comme nous l’avons vu plus haut dans l’article, PowerShell peut être utilisé pour automatiser des tâches plus complexes en créant des scripts personnalisés. Ils peuvent être programmés pour s’exécuter à des intervalles réguliers ou en réponse à des événements déclenchés, ce qui permet aux administrateurs système de se concentrer sur d’autres tâches importantes sans avoir à se soucier de la gestion des processus et des services.

Voici quelques exemples :

Pour arrêter le service « Windows Update », vous pouvez utiliser la commande suivante :

code powershell : Stop-Service -Name "wuauserv"

Pour démarrer ce même service, vous pouvez utiliser la commande suivante :

code powershell : Start-Service -Name "wuauserv"

De même, pour arrêter un processus « notepad.exe », vous pouvez utiliser la commande suivante :

code powershell : Stop-Process -Name "notepad"

Pour finir, voici un exemple de code qui démarre le processus « notepad.exe » :

code powershell : Start-Process -FilePath "notepad.exe"

Que vous pouvez démarrer en administrateur en ajoutant le paramètre « -Verb runAs » :

code powershell : Start-Process -FilePath "notepad.exe" -Verb runAs

PowerShell et la gestion de fichiers

Le dernier point que nous allons aborder est la gestion de fichiers. PowerShell offre de nombreuses fonctionnalités pour cela et il peut être utilisé pour créer, copier, déplacer, renommer et supprimer des fichiers et des dossiers. Cela peut être particulièrement utile pour l’automatisation de certaines tâches courantes, telles que la gestion de sauvegardes et l’organisation de fichiers.

Quelques exemples :

Par exemple, pour copier un fichier « exemple.txt » vers un autre dossier « C:\destination », vous pouvez utiliser la commande suivante :

code powershell : Copy-Item -Path "C:\example.txt" -Destination "C:\destination"

Pour déplacer un fichier « exemple.txt » d’un dossier à un autre, vous pouvez utiliser la commande suivante :

code powershell : Move-Item -Path "C:\exemple.txt" -Destination "C:\destination"

Si on veut renommer ce fichier « exemple.txt » en « new_exemple.txt », vous pouvez utiliser la commande suivante :

code powershell :Rename-Item -Path "C:\exemple.txt" -NewName "new_exemple.txt"

Pour créer un nouveau dossier « nouveau_dossier », vous pouvez utiliser la commande suivante :

code powershell : New-Item -ItemType Directory -Path "C:\nouveau_dossier"

Et pour finir, pour supprimer un fichier « exemple.txt », vous pouvez utiliser la commande suivante :

code powzershell : Remove-Item -Path "C:\exemple.txt"

Ces commandes permettent de gérer facilement les fichiers et les dossiers sur votre système sans avoir à utiliser l’interface graphique de Windows.

Conclusion

En conclusion, PowerShell est un outil idéal pour tout administrateur système ou développeur. Premièrement, il permet d’automatiser de nombreuses tâches courantes, telles que la gestion des utilisateurs, la sauvegarde de données et la configuration de serveurs. Ensuite, sa capacité à automatiser des tâches complexes à l’aide de scripts, fait que PowerShell est d’ores et déjà devenu un outil indispensable pour les environnements de cloud et de virtualisation. De plus, sa gestion facilité de l’Active Directory en fait un choix idéal pour les administrateurs. Enfin, la facilité d’utilisation et la flexibilité offertes par ce Shell font de lui, un véritable plaisir à l’utilisation. Et vous, utilisez vous PowerShell ?

Pour plus d’information sur PowerShell, vous pouvez aller voir la page Wikipédia dédié ou sur la documentation de Microsoft.

Je vous recommande également les autres articles de ce site si vous souhaitez en apprendre plus sur l’univers informatique.