PowerShell : Gestion des Processus et des Services
Dans ce chapitre, nous allons explorer comment utiliser PowerShell pour gérer les processus en cours d’exécution sur votre système, ainsi que les services disponibles.
Gestion des Processus
PowerShell offre plusieurs cmdlets pour interagir avec les processus en cours d’exécution. Voici quelques-uns des cmdlets les plus couramment utilisés :
Get-Process
: Pour obtenir la liste des processus en cours d’exécution sur votre système.Stop-Process
: Pour arrêter un processus en cours d’exécution.Start-Process
: Pour démarrer un nouveau processus.Wait-Process
: Pour attendre que les processus spécifiés se terminent.
Voici un exemple de démonstration montrant comment obtenir la liste des processus en cours d’exécution et arrêter un processus spécifique :
# Obtenir la liste des processus en cours d'exécution
Get-Process
# Arrêter un processus (par exemple Notepad)
Stop-Process -Name notepad
Gestion des Services
PowerShell permet également de gérer les services disponibles sur votre système. Voici quelques cmdlets couramment utilisés pour cette tâche :
Get-Service
: Pour obtenir la liste des services disponibles sur votre système.Start-Service
: Pour démarrer un service.Stop-Service
: Pour arrêter un service.Restart-Service
: Pour redémarrer un service.Set-Service
: Pour modifier les propriétés d’un service.
Voici un exemple de démonstration montrant comment obtenir la liste des services disponibles et démarrer/arrêter un service spécifique :
# Obtenir la liste des services disponibles
Get-Service
# Démarrer un service (par exemple le service Windows Update)
Start-Service -Name wuauserv
# Arrêter un service (par exemple le service Windows Update)
Stop-Service -Name wuauserv
Automatisation de la Gestion des Processus et des Services
En combinant ces cmdlets avec des scripts PowerShell, vous pouvez automatiser efficacement la gestion des processus et des services sur votre système. Voici un exemple de script PowerShell qui vérifie si un processus est en cours d’exécution, le cas échéant, il le ferme :
# Nom du processus à surveiller
$nomProcessus = "notepad"
# Vérifier si le processus est en cours d'exécution
if (Get-Process -Name $nomProcessus -ErrorAction SilentlyContinue) {
# Si le processus est en cours d'exécution, l'arrêter
Stop-Process -Name $nomProcessus
Write-Host "Le processus $nomProcessus a été arrêté."
} else {
Write-Host "Le processus $nomProcessus n'est pas en cours d'exécution."
}
Ce script vérifie si le processus Notepad est en cours d’exécution. Si c’est le cas, il l’arrête. Sinon, il affiche un message indiquant que le processus n’est pas en cours d’exécution.
Voici des démonstrations supplémentaires pour chaque aspect du chapitre sur la gestion des données avec PowerShell :
Démo 1 : Lecture et Écriture de Fichiers
# Lire le contenu d'un fichier
$contenu = Get-Content -Path "C:\chemin\vers\fichier.txt"
Write-Host "Contenu du fichier :"
$contenu
# Écrire du contenu dans un nouveau fichier
$contenu | Set-Content -Path "C:\chemin\vers\nouveau_fichier.txt"
Write-Host "Le contenu a été écrit dans le nouveau fichier."
Démo 2 : Traitement de Données CSV
Supposons que nous ayons un fichier CSV contenant des informations sur des employés avec les colonnes “Nom”, “Âge” et “Département”. Voici comment importer le fichier, filtrer les employés âgés de plus de 30 ans et exporter les résultats :
# Importer des données à partir d'un fichier CSV
$donnees = Import-Csv -Path "C:\chemin\vers\employes.csv"
# Filtrer les employés âgés de plus de 30 ans
$employesFiltres = $donnees | Where-Object { $_.Age -gt 30 }
# Afficher les employés filtrés
Write-Host "Employés âgés de plus de 30 ans :"
$employesFiltres | Format-Table -AutoSize
# Exporter les employés filtrés vers un nouveau fichier CSV
$employesFiltres | Export-Csv -Path "C:\chemin\vers\employes_filtres.csv" -NoTypeInformation
Write-Host "Les employés filtrés ont été exportés vers un nouveau fichier CSV."
Démo 3 : Travail avec des Bases de Données
Supposons que nous voulions exécuter une requête SQL pour récupérer des informations sur les produits à partir d’une base de données. Voici comment se connecter à la base de données, exécuter la requête SQL et afficher les résultats :
# Charger le module SQL Server
Import-Module SqlServer
# Définir les paramètres de connexion
$serveur = "mon_serveur"
$baseDeDonnees = "ma_base_de_donnees"
$utilisateur = "mon_utilisateur"
$motDePasse = "mon_mot_de_passe"
# Se connecter à la base de données
$connexion = New-SqlConnection -ServerInstance $serveur -Database $baseDeDonnees -Username $utilisateur -Password $motDePasse
$connexion.Open()
# Exécuter une requête SQL
$requete = "SELECT * FROM Products"
$commande = $connexion.CreateCommand()
$commande.CommandText = $requete
$resultat = $commande.ExecuteReader()
# Afficher les résultats
Write-Host "Produits :"
while ($resultat.Read()) {
Write-Host "ID:", $resultat.GetInt32(0), "Nom:", $resultat.GetString(1), "Prix:", $resultat.GetDecimal(2)
}
# Fermer la connexion
$connexion.Close()
Ces démonstrations devraient vous donner une meilleure compréhension de la manière dont PowerShell peut être utilisé pour gérer efficacement les données, que ce soit en travaillant avec des fichiers, des données CSV ou des bases de données. N’hésitez pas à les expérimenter davantage et à les adapter en fonction de vos propres scénarios d’utilisation.