0% ont trouvé ce document utile (0 vote)
1 vues5 pages

Guide Automatisation Shells

Ce guide compare l'automatisation des tâches système à l'aide de Bash, CMD et PowerShell, en expliquant leurs environnements, philosophies et cas d'usage typiques. Bash et PowerShell sont présentés comme les options les plus puissantes, tandis que CMD est utile pour des scripts simples. Le document fournit également des exemples de syntaxe, des points forts et limites pour chaque shell, ainsi que des bonnes pratiques pour l'automatisation.

Transféré par

angeloworkstudy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues5 pages

Guide Automatisation Shells

Ce guide compare l'automatisation des tâches système à l'aide de Bash, CMD et PowerShell, en expliquant leurs environnements, philosophies et cas d'usage typiques. Bash et PowerShell sont présentés comme les options les plus puissantes, tandis que CMD est utile pour des scripts simples. Le document fournit également des exemples de syntaxe, des points forts et limites pour chaque shell, ainsi que des bonnes pratiques pour l'automatisation.

Transféré par

angeloworkstudy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Automatiser avec Bash, CMD et

PowerShell
Guide comparatif pour l'automatisation de tâches système

1. Introduction : pourquoi automatiser ?


L'automatisation consiste à écrire des scripts qui exécutent des suites de commandes sans intervention manuelle :
sauvegardes, nettoyage de fichiers, déploiements, surveillance système, traitement de logs, tâches planifiées, etc.
Trois environnements dominent selon le système d'exploitation et le contexte : Bash (Linux/macOS), CMD (invite
de commandes Windows, historique) et PowerShell (shell Windows moderne, orienté objets).

Vue d'ensemble
Shell Plateforme Philosophie Cas d'usage typique

Bash Linux, macOS, WSL Texte / flux (pipe) Serveurs, CI/CD, cron

CMD Windows (natif) Commandes simples, .bat Scripts hérités, tâches basiques

PowerShell Windows, Linux, macOS Objets .NET Administration système, Azure/AD

Bash et PowerShell sont les deux options les plus puissantes aujourd'hui pour l'automatisation sérieuse ; CMD
reste utile pour des scripts très simples ou la compatibilité avec d'anciens outils Windows.

Guide - Automatisation avec Bash, CMD et PowerShell Page 1


2. Automatisation avec Bash
Bash (Bourne Again SHell) est le shell par défaut sur la plupart des distributions Linux et sur macOS (remplacé
par zsh par défaut depuis Catalina, mais bash reste omniprésent). C'est l'outil de référence pour automatiser des
tâches serveur, des pipelines CI/CD ou des tâches planifiées via cron.

Variables et structures de base


#!/bin/bash
nom="Angelo"
echo "Bonjour $nom"

for f in *.log; do
echo "Traitement de $f"
done

if [ -f "[Link]" ]; then
echo "Sauvegarde deja presente"
fi

Exemple : sauvegarde automatique


#!/bin/bash
SRC="/home/user/documents"
DEST="/backup/documents_$(date +%Y%m%d).[Link]"
tar -czf "$DEST" "$SRC"
echo "Sauvegarde terminee : $DEST"

Planification avec cron


La commande crontab -e permet de programmer l'exécution périodique d'un script. Exemple : sauvegarde tous
les jours à 2h du matin.

0 2 * * * /home/user/scripts/[Link] >> /var/log/[Link] 2>&1

Points forts / limites


• Forces : très répandu, excellent pour manipuler fichiers/texte, pipes puissants, intégration native avec les outils
Unix (grep, sed, awk).

• Limites : syntaxe parfois cryptique, gestion d'erreurs manuelle, pas de gestion d'objets structurés (tout est texte).

Guide - Automatisation avec Bash, CMD et PowerShell Page 2


3. Automatisation avec CMD (Batch)
CMD (Command Prompt) exécute des scripts .bat ou .cmd. Hérité de MS-DOS, il reste présent sur toutes les
versions de Windows mais est aujourd'hui largement supplanté par PowerShell pour les tâches complexes.

Variables et structures de base


@echo off
set nom=Angelo
echo Bonjour %nom%

for %%f in (*.log) do (


echo Traitement de %%f
)

if exist [Link] (
echo Sauvegarde deja presente
)

Exemple : nettoyage de fichiers temporaires


@echo off
echo Suppression des fichiers temporaires...
del /q /f "%TEMP%\*.*"
echo Nettoyage termine.
pause

Planification avec le Planificateur de tâches


Un script .bat se programme via schtasks en ligne de commande, ou via l'interface graphique "Planificateur de
tâches" (Task Scheduler).

schtasks /create /tn "NettoyageTemp" /tr "C:\scripts\[Link]" /sc daily /st 02:00

Points forts / limites


• Forces : disponible partout sur Windows sans installation, syntaxe simple pour des tâches basiques, compatible
avec de vieux outils.

• Limites : syntaxe très limitée (pas d'objets, gestion de chaînes rudimentaire), peu adapté à des scripts
complexes, pratiquement plus maintenu par Microsoft au profit de PowerShell.

Guide - Automatisation avec Bash, CMD et PowerShell Page 3


4. Automatisation avec PowerShell
PowerShell est le shell moderne de Microsoft, basé sur le framework .NET. Contrairement à bash et CMD qui
manipulent du texte, PowerShell manipule des objets structurés, ce qui simplifie grandement le traitement de
données complexes (fichiers, processus, services, API REST...).

Variables et structures de base


$nom = "Angelo"
Write-Host "Bonjour $nom"

Get-ChildItem *.log | ForEach-Object {


Write-Host "Traitement de $($_.Name)"
}

if (Test-Path "[Link]") {
Write-Host "Sauvegarde deja presente"
}

Exemple : sauvegarde automatique


$src = "C:\Users\Angelo\Documents"
$date = Get-Date -Format "yyyyMMdd"
$dest = "D:\Backup\documents_$[Link]"

Compress-Archive -Path $src -DestinationPath $dest


Write-Host "Sauvegarde terminee : $dest"

Exemple : surveillance de service


$service = Get-Service -Name "Spooler"
if ($[Link] -ne "Running") {
Start-Service -Name "Spooler"
Write-Host "Service redemarre"
}

Planification avec le Planificateur de tâches


$action = New-ScheduledTaskAction -Execute "[Link]" -Argument "-File C:\scripts\b
ackup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
Register-ScheduledTask -TaskName "Backup" -Action $action -Trigger $trigger

Points forts / limites


• Forces : gestion d'objets (pas de parsing de texte fragile), très intégré à l'écosystème Windows/Azure/Active
Directory, cmdlets cohérents (Verbe-Nom), fonctionne aussi sur Linux/macOS (PowerShell 7+).

• Limites : verbeux comparé à bash, courbe d'apprentissage un peu plus longue, historiquement ciblé par des
scripts malveillants (PowerShell offensif), donc souvent surveillé/restreint en entreprise.

Guide - Automatisation avec Bash, CMD et PowerShell Page 4


5. Comparaison directe et bonnes pratiques
Même tâche, trois syntaxes : lister les fichiers > 1 Mo
Bash find . -size +1M -type f

CMD forfiles /S /M *.* /C "cmd /c if @fsize GTR 1048576 echo @path"

PowerShell Get-ChildItem -Recurse | Where-Object {$_.Length -gt 1MB}

Quel shell choisir ?


• Serveur Linux, CI/CD, conteneurs Docker → Bash (quasi incontournable).

• Administration Windows moderne, Active Directory, Azure → PowerShell.

• Script Windows ultra simple, compatibilité avec un vieux système → CMD (batch).

• Projet multiplateforme (Linux + Windows + macOS) → PowerShell 7+ (portable) ou Bash via WSL.

Bonnes pratiques générales


• Toujours tester un script sur un jeu de données non critique avant production.

• Ajouter des logs (redirection vers un fichier) pour tracer l'exécution automatisée.

• Gérer les erreurs explicitement : set -e en bash, try/catch en PowerShell, vérification de %ERRORLEVEL%
en CMD.

• Éviter les mots de passe en clair dans les scripts ; utiliser des variables d'environnement ou un gestionnaire de
secrets.

• Documenter chaque script (commentaires, usage, prérequis) pour faciliter la maintenance.

• Versionner les scripts d'automatisation (Git) comme n'importe quel code source.

Fin du guide — Automatisation avec Bash, CMD et PowerShell

Guide - Automatisation avec Bash, CMD et PowerShell Page 5

Vous aimerez peut-être aussi