TP : Commandes de base
d'administration et traitement de
fichiers avec PowerShell
Objectifs du TP
- Manipuler les commandes d'administration système avec PowerShell.
- Automatiser des tâches simples liées à la gestion des utilisateurs, des services, et des fichiers.
- Lire et exploiter des fichiers CSV structurés.
- Intégrer des commandes dans un script automatisé.
Contexte
Vous êtes technicien en administration système. Vous devez automatiser plusieurs tâches pour
le bon fonctionnement d’un poste de travail sous Windows : surveillance, gestion d'utilisateurs,
manipulation de fichiers de journalisation, etc.
Partie 1 : Commandes de base d’administration
1. Listez tous les services disponibles sur votre machine.
Get-Service
2. Listez tous les processus en cours.
Get-Process
3. Créez un point de restauration système.
Checkpoint-Computer -Description "TP-Restauration"
4. Créez un fichier texte et ajoutez-y du contenu.
New-Item -Path "C:\TP" -ItemType Directory
New-Item -Path "C:\TP\[Link]" -ItemType File
Add-Content -Path "C:\TP\[Link]" -Value "Configuration initiale"
Partie 2 : Gestion des comptes locaux
1. Créez un utilisateur local nommé stagiaire.
New-LocalUser -Name "stagiaire" -Password (ConvertTo-SecureString
"P@ssw0rd" -AsPlainText -Force)
2. Activez le compte utilisateur stagiaire.
Enable-LocalUser -Name "stagiaire"
3. Ajoutez cet utilisateur au groupe Administrateurs.
Add-LocalGroupMember -Group "Administrators" -Member "stagiaire"
Partie 3 : Lecture et manipulation de fichiers CSV
On vous fournit un fichier `[Link]`.
Contenu exemple :
Prénom,Nom,Department,Salaire
Ali,Benali,Production,5500
Zahra,El Amrani,Marketing,4900
1. Lire les données du fichier.
Import-Csv -Path "./[Link]"
2. Afficher uniquement les employés du département Production.
Import-Csv -Path "./[Link]" | Where-Object {$_.Department -eq
'Production'}
3. Afficher le prénom du premier employé.
Import-Csv -Path "./[Link]" | Select-Object -First 1 | Select-
Object -ExpandProperty 'Prénom'
Partie 4 : Script complet d'automatisation
Écrire un script PowerShell `tp_admin.ps1` qui :
- Crée un dossier de logs
- Lit un fichier CSV
- Filtre les données selon le département
- Enregistre les résultats filtrés dans un nouveau fichier CSV
# Création du dossier logs
New-Item -Path "C:\TP\Logs" -ItemType Directory -Force
# Lecture et filtrage
$employes = Import-Csv -Path "C:\TP\[Link]"
$filtre = $employes | Where-Object { $_.Department -eq "Production" }
# Sauvegarde
$filtre | Export-Csv -Path "C:\TP\Logs\employes_production.csv" -
NoTypeInformation
Write-Host "Export terminé."
Partie 5 : Mise en œuvre des commandes PowerShell dans un script
Un script PowerShell est un fichier (extension .ps1) qui contient une suite de commandes à
exécuter automatiquement. Il permet de mettre en œuvre les quatre briques algorithmiques
suivantes :
1. La gestion des variables – pour stocker des valeurs intermédiaires ;
2. La lecture/écriture – pour interagir avec des fichiers ou afficher des résultats ;
3. Les conditions – pour prendre des décisions (if, switch) ;
4. Les boucles – pour répéter des actions (for, foreach, while).
🔹 Exercice 1
Objectif : Créer un script interactif qui filtre des données selon un critère saisi.
Consigne :
Écrire un script PowerShell qui :
Demande à l'utilisateur un nom de département (via Read-Host)
Lit un fichier [Link]
Affiche uniquement les employés appartenant à ce département
Exemple de script :
# Lire le département entré par l'utilisateur
$dept = Read-Host "Entrez le nom du département"
# Charger les données depuis le fichier CSV
$employes = Import-Csv -Path "C:\TP\[Link]"
# Filtrer et afficher les résultats
$filtre = $employes | Where-Object { $_.Department -eq $dept }
$filtre | Format-Table
🔶 Exercice 2
Objectif : Traiter dynamiquement plusieurs fichiers CSV et faire des calculs.
Consigne :
Écrire un script PowerShell qui :
Parcourt tous les fichiers CSV d’un dossier (C:\TP\data)
Calcule la moyenne des salaires pour chaque fichier
Affiche pour chaque fichier : son nom + la moyenne calculée
Exemple de script :
# Récupérer tous les fichiers CSV du dossier
$fichiers = Get-ChildItem -Path "C:\TP\data" -Filter *.csv
# Parcourir chaque fichier
foreach ($f in $fichiers) {
# Importer les données du fichier
$data = Import-Csv -Path $[Link]
# Calculer la moyenne des salaires
$moyenne = ($data | Measure-Object -Property Salaire -Average).Average
# Afficher le nom du fichier et la moyenne
Write-Host "Fichier: $($[Link]) - Moyenne des salaires: $moyenne"