Il fut un temps oĂč PowerShell 2.0 rĂ©gnait en maĂźtre sur nos postes. 2009, les dino-scripts gambadaient, Get-Processsuffisait Ă se sentir DevOps, et les malwares pouvaient dĂ©rouler des .ps1 non signĂ©s sans demander la carte dâidentitĂ©.
AoĂ»t 2025 : Microsoft retire officiellement PowerShell 2.0. Pas de fleurs, pas dâhommage national â juste un âSupprimĂ© des fonctionnalitĂ©sâ. Le vieux tournevis est parti, place Ă la perceuse connectĂ©e.
đ°ïžâš Ce qui Ă©tait bien avant (PowerShell 2.0)
- Compatâ en bĂ©ton : tournait partout, de Windows 7 Ă Server 2008 R2.
- Simplicité rustique : pas de JSON, pas de REST, juste des cmdlets basiques et de la logique.
- Tolérant au chaos : scripts non signés ? Pas de souci. Modules antiques ? Pareil.
- PrĂ©visible : pas de mise Ă jour intempestive, pas dâAPI qui change tous les mois.
- Culture commune : tout lâĂ©cosystĂšme IT avait au moins un script qui ne marchait que sous 2.0 â un classique.
Verdict : comme Internet Explorer 6⊠dangereux mais âindispensableâ pour une poignĂ©e dâoutils quâon nâa jamais pris le temps de réécrire.
đ§đ Ce qui change (PowerShell 7.x et le monde moderne)
- Multiplateforme : Windows, Linux, macOS â mĂȘme script, trois cibles (et trois fois plus de tests).
- SĂ©curité : politiques dâexĂ©cution strictes, signatures, intĂ©gration Defender/AMS,Â
ConstrainedLanguageMode. - Perfâ : pipeline optimisĂ©, parallĂ©lisme natif (
ForEach-Object -Parallel). - ĂcosystĂšme : PowerShell Gallery (
Install-Module), versions qui bougent, modules cloud Ă jour. - Interop : JSON/YAML/REST en premiĂšre classe,Â
Invoke-RestMethod qui ne pleure plus. - DevOps-ready : CI/CD (GitHub Actions, Azure DevOps, Jenkins), conteneurs, scripts reproductibles.
- .NET moderne : basĂ© sur .NET (Core) 6/8 â plus rapide, plus portable.
đđź Ce que ce sera maintenant
- Migration obligatoire : 2.0 nâĂ©tant plus livrĂ©, vos scripts devront viser 5.1 ou 7.x.
- Hybride raisonnable : 5.1 reste le âWindows natifâ, 7.x devient le âstandard portableâ.
- Discipline : signature des scripts, modules versionnés, revue sécurité.
- Cloud first : M365, Azure, Graph, Exchange Online â lâautoroute est goudronnĂ©e jusquâĂ Redmond.
- Moins dâhĂ©rĂ©sie : adieux aux cmdlets bizarres non maintenues ; bonjour aux modules officiels.
â đ Les plus
- Beaucoup plus sĂ»r : moins de surface dâattaque, meilleure traçabilitĂ©.
- Plus rapide : parallĂ©lisme et perfâ en hausse.
- Plus actuel : JSON/REST natifs, API modernes, tooling VS Code.
- Portable : mĂȘme base de code sur serveurs Windows et Linux.
- ĂcosystĂšme vivant : modules maintenus, gallery centralisĂ©e.
âđ§© Les moins
- Compatâ cassĂ©e : certains vieux scripts/modules ne passeront pas sans refonte.
- Courbe dâapprentissage : nouvelles syntaxes, bonnes pratiques Ă intĂ©grer.
- Dette technique exposĂ©e : les âquick & dirtyâ de 2009 remontent Ă la surface.
- Gouvernance : signature, politiques dâexĂ©cution, pipeline de dĂ©ploiement Ă formaliser.
đ§Șđ Ce qui change concrĂštement (avant / aprĂšs)
Filtrer des services
- 2.0 :powershellCopierModifier
Get-Service | Where-Object { $_.Status -eq "Running" } - 7.x (plus lisible et rapide) :
powershellGet-Service | Where Status -eq Running
Paralléliser des tùches
- 2.0 :Â non, sauf bricolage lourd / jobs manuels
- 7.x :
powershell1..5 | ForEach-Object -Parallel { "TĂąche $_ - $(Get-Date)" }
Consommer une API JSON
- 2.0 : verbeux, fragile
- 7.x :
powershell$data = Invoke-RestMethod -Uri "https://api.example.com/items" $data | Where Price -gt 100 | Select Name, Price
Gestion de modules
- 2.0 : copie manuelle, GAC, folklore
- 7.x :
powershellInstall-Module Microsoft.Graph -Scope CurrentUser Import-Module Microsoft.Graph
Sécurité / exécution
- 2.0 : scripts non signĂ©s ? âPasse.â
- 7.x : politique dâexĂ©cution, signature recommandĂ©e, journalisation renforcĂ©e.
đ§đ Plan de migration express (pragmatique et pas chiant)
- Inventaire đïž
- Liste les scripts qui tournent encore en 2.0 (tùches planifiées, GPO, outils tiers).
- Identifie les modules old-school (Exchange on-prem, WMI legacy, etc.).
- Tests rapides đ§Ș
- Essaie en 5.1 puis en 7.x.
- Note ce qui casse :Â
Where-Object, chemins, encodage, modules non portés.
- Refactor minimal âïž
- Remplace les vieux patterns (
Where-Object { $_.x }) par leurs versions modernes. - Ăvite les dĂ©pendances WMI obsolĂštes si un module CIM/REST existe.
- Remplace les vieux patterns (
- SĂ©curité đ
- MetsÂ
Set-ExecutionPolicy RemoteSigned (ou AllSigned selon ta politique). - Signe les scripts de prod, active la journalisation (transcription, module logging).
- MetsÂ
- Packaging & CIÂ đïž
- Versionne tes scripts (Git), ajoute des tests basiques (Pester).
- DĂ©ploie via pipeline (GitHub Actions/Azure DevOps) â fini le copier-coller RDP.
- Conduite du changement đŁ
- Mini-guide utilisateur (âles 10 diffĂ©rences qui piquentâ),
- Sprint de nettoyage technique,
- Tableau de bord migration (ce qui reste à porter / remplacé / supprimé).
đ§°đ Tableau minute âAvant vs Maintenantâ
| đ§± ThĂšme | âł PowerShell 2.0 | đ PowerShell 7.x |
|---|---|---|
| Sécurité | Laxiste | Signatures, politique, journaux |
| Perfâ | Lente | ParallĂšle, .NET moderne |
| API/Formats | XML/WMI | JSON, REST, YAML, Graph |
| Modules | Locaux, datés | Gallery, versionnés, CI |
| Portabilité | Windows only | Windows + Linux + macOS |
| DevOps | Ă la main | Pipelines standard, Pester |
đŻđ Conclusion (sarcasme dosĂ©, cafĂ© serrĂ©)
Microsoft nâa pas âcassĂ© ce qui marchaitâ : il a retirĂ© ce qui mettait des portes ouvertes dans vos SI.
PowerShell 7.x est objectivement meilleur â plus rapide, plus sĂ»r, plus adaptĂ© aux stacks 2025. Oui, ça demande du boulot : réécrire deux-trois dinosaures, signer des scripts, documenter un pipeline. Mais câest un effort quâon aurait dĂ» faire hier.
Morale : si votre prod dĂ©pend encore dâun script 2.0 trouvĂ© sur un forum moldave en 2011, la panne nâest pas âĂ cause de Microsoftâ. Elle est Ă cause du temps qui passe.
đ ïžđ Bonus : snippet âprĂȘt Ă migrerâ
powershell
# Lancer un script en 7.x si présent, sinon fallback 5.1
$ps7 = "${env:ProgramFiles}\PowerShell\7\pwsh.exe"
if (Test-Path $ps7) { & $ps7 -File ".\run.ps1" } else { powershell.exe -File ".\run.ps1" }
Avec Microsoft, câest toujours un peu comme recevoir un cadeau emballĂ© par un magicien :
tu sais quâil y a quelque chose dedans, tu sais que ça brille⊠mais tu nâes pas sĂ»r que ce sera vraiment ce que tu voulais.
PowerShell 7.x a le potentiel dâĂȘtre un vrai upgrade :
- plus rapide,
- plus sûr,
- plus âcloud-readyâ,
- et potentiellement moins sujet aux failles âMade in Legacy 2009âąâ.
Mais⊠on connaßt la chanson :
- migration parfois douloureuse,
- scripts qui crient Ă la mort,
- dépendances tierces qui cassent,
- et nouveautés qui arrivent avec leur lot de bugs de jeunesse.
Bref, ça peut ĂȘtre bien, mais comme on dit en IT : « On fait confiance⊠mais on garde un backup et un rollback plan. »đ
