⚡ PowerShell - Guide pratique

PowerShell est un langage de script et shell de ligne de commande développé par Microsoft. Il permet d'automatiser des tâches administratives et de gérer les configurations sur les systèmes Windows. Cet outil puissant combine les fonctionnalités d'un shell traditionnel avec un langage de scripting orienté objet.

📑 Sommaire

1. Syntaxe de base

PowerShell utilise une syntaxe du type Verbe-Nom pour ses commandes (appelées cmdlets) :

Get-Process

Récupère la liste des processus en cours d'exécution.

Vous pouvez utiliser le pipe (|) pour chaîner des commandes :

Get-Service | Where-Object {$_.Status -eq "Running"}

Affiche uniquement les services dont le statut est "Running" (en cours d'exécution).

Définition de variables (commencent par $) :

$maVariable = "Bonjour"
$nombre = 42
$liste = @(1, 2, 3, 4)
$hashtable = @{Cle1 = "Valeur1"; Cle2 = "Valeur2"}

Commentaires :

# Ceci est un commentaire sur une ligne

<# 
   Ceci est un commentaire 
   sur plusieurs lignes 
#>

2. Gestion des fichiers

Explorer et manipuler les fichiers et dossiers :

Get-ChildItem -Path C:\MonDossier

Liste le contenu du dossier "MonDossier" (équivalent à ls ou dir).

Copy-Item -Path source.txt -Destination destination.txt

Copie un fichier d'un emplacement à un autre.

Remove-Item -Path fichier.txt

Supprime le fichier spécifié.

Autres commandes utiles :

New-Item -Path nouveauFichier.txt -ItemType File
Move-Item -Path src.txt -Destination dest.txt
Rename-Item -Path ancien.txt -NewName nouveau.txt
Test-Path -Path C:\chemin\vers\fichier.txt

3. Modules et Snap-ins

Les modules étendent les fonctionnalités de PowerShell :

Get-Module -ListAvailable

Liste tous les modules disponibles sur le système.

Import-Module ActiveDirectory

Importe le module Active Directory pour pouvoir utiliser ses cmdlets.

Get-Command -Module ActiveDirectory

Liste toutes les commandes disponibles dans le module Active Directory.

Find-Module -Name "*Azure*"

Recherche des modules liés à Azure dans le dépôt en ligne PowerShell Gallery.

4. Exécution à distance (remoting)

PowerShell permet d'exécuter des commandes sur des machines distantes :

Enable-PSRemoting -Force

Active la fonctionnalité de remoting sur la machine locale (à exécuter en administrateur).

Enter-PSSession -ComputerName serveur

Établit une session interactive avec un ordinateur distant.

Invoke-Command -ComputerName serveur1, serveur2 -ScriptBlock { Get-Service }

Exécute une commande ou un bloc de script sur plusieurs ordinateurs distants.

$session = New-PSSession -ComputerName serveur
Invoke-Command -Session $session -ScriptBlock { ... }
Remove-PSSession -Session $session

Crée, utilise et ferme une session persistante avec un ordinateur distant.

5. Écriture de scripts

Les scripts PowerShell ont l'extension .ps1 et permettent d'automatiser des tâches complexes :

.\monScript.ps1

Exécute un script PowerShell situé dans le répertoire courant.

Set-ExecutionPolicy RemoteSigned

Modifie la politique d'exécution pour autoriser l'exécution de scripts locaux (à exécuter en administrateur).

Exemple de script simple :

# monScript.ps1
param(
    [string]$Nom = "Monde"
)

Write-Host "Bonjour, $Nom !"

function Get-Carre {
    param([int]$Nombre)
    return $Nombre * $Nombre
}

$resultat = Get-Carre -Nombre 4
Write-Host "Le carré de 4 est $resultat"

Exécution avec paramètres :

.\monScript.ps1 -Nom "Guillaume"

6. Alias utiles

PowerShell fournit des alias pour faciliter la transition depuis d'autres shells :

ls        # alias pour Get-ChildItem
cat       # alias pour Get-Content
man       # alias pour Get-Help
cd        # alias pour Set-Location
pwd       # alias pour Get-Location
rm        # alias pour Remove-Item
cp        # alias pour Copy-Item
mv        # alias pour Move-Item
echo      # alias pour Write-Output

Manipuler les alias :

Get-Alias           # Liste tous les alias
Get-Alias -Name ls  # Trouve la commande derrière un alias
New-Alias -Name gh -Value Get-Help  # Crée un nouvel alias

7. Gestion des services

Commandes pour gérer les services Windows :

Get-Service

Liste tous les services disponibles sur le système.

Get-Service -Name "wuauserv"

Affiche les informations sur le service Windows Update.

Start-Service -Name "nom_service"

Démarre un service spécifique.

Stop-Service -Name "nom_service"

Arrête un service spécifique.

Restart-Service -Name "nom_service"

Redémarre un service spécifique.

Set-Service -Name "nom_service" -StartupType Automatic

Configure un service pour qu'il démarre automatiquement au démarrage du système.

8. Structures conditionnelles

PowerShell propose diverses structures de contrôle :

# Structure if-else
if ($x -eq 42) { 
    "La réponse" 
} else { 
    "Pas encore" 
}
# Structure switch
switch ($jour) {
    "Lundi"    { "Début de semaine" }
    "Vendredi" { "Fin de semaine" }
    default    { "Milieu de semaine" }
}
# Boucle foreach
foreach ($item in $collection) {
    # Traitement de $item
}
# Boucle for
for ($i = 0; $i -lt 10; $i++) {
    # Traitement
}
# Boucle while
while ($condition) {
    # Traitement
}

Opérateurs de comparaison courants :

🎁 Bonus : Techniques avancées

Traitement en pipeline

# Enchaînement de commandes
Get-Process | Where-Object { $_.CPU -gt 10 } | Sort-Object -Property CPU -Descending | Select-Object -First 5

Création d'objets personnalisés

# Créer un objet personnalisé
$personne = [PSCustomObject]@{
    Nom = "Dupont"
    Prenom = "Jean"
    Age = 35
}

# Utilisation
$personne.Nom
$personne | Format-Table -AutoSize

Gestion des erreurs

try {
    # Code qui peut générer une erreur
    $resultat = 10 / 0
} catch {
    Write-Error "Une erreur s'est produite : $_"
} finally {
    # Code exécuté dans tous les cas
    "Opération terminée"
}

Commandes d'administration système

# Obtenir des informations système
Get-ComputerInfo

# Gérer les utilisateurs et groupes locaux
Get-LocalUser
New-LocalUser -Name "Utilisateur" -Password (ConvertTo-SecureString "MotDePasse" -AsPlainText -Force)

# Interroger le registre
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"
🏠 Retour au sommaire général