# Bloc 1 - SE Fiche 10 - Programmation PowerShell, Notions de base
## Introduction à PowerShell
PowerShell est un langage de script et une interface en ligne de commande développée par Microsoft. Contrairement à l'invite de commande classique (`cmd.exe`), PowerShell repose sur .NET et utilise un modèle objet pour manipuler les données.
Il est utilisé pour l'administration système, l'automatisation des tâches et la gestion des environnements Windows et Azure.
## Cmdlets et objets
Les commandes PowerShell sont appelées *cmdlets* et suivent la convention `Verbe-Nom` (ex: `Get-Process`, `Set-Item`). Contrairement aux commandes traditionnelles de `cmd.exe`, les cmdlets retournent des objets, facilitant leur manipulation.
Comparaison avec DOS :
-**Lister le contenu d'un dossier**
- DOS : `dir`
- PowerShell : `Get-ChildItem`
- Avantage PowerShell : retourne des objets contenant des propriétés exploitables (taille, date de modification, etc.).
Cette commande filtre les services en cours d'exécution et affiche leur nom.
## Variables et structures de contrôle
PowerShell utilise le préfixe `$` pour déclarer des variables.
```powershell
$nom="BTS SIO"
Write-Output"Bonjour, $nom!"
```
Les structures de contrôle classiques sont disponibles :
-`if-else`
-`foreach`
-`while`
-`switch`
Exemple de boucle `foreach` :
```powershell
$processus=Get-Process
foreach($pin$processus){
Write-Output$p.Name
}
```
## Programmation orientée objet en PowerShell
PowerShell permet de créer et manipuler des objets de manière avancée.
### Les cmdlets retournent des objets
PowerShell ne retourne pas du simple texte comme `cmd.exe`, mais des objets. Par exemple, `Get-ChildItem` retourne une liste d'objets représentant les fichiers et dossiers, et non un simple affichage textuel. Cela permet d'accéder directement aux propriétés et de les manipuler facilement.
Depuis PowerShell 5.0, on peut définir des classes :
```powershell
classPersonne{
[string]$Nom
[int]$Age
Personne([string]$nom,[int]$age){
$this.Nom=$nom
$this.Age=$age
}
[string]Bonjour(){
return"Bonjour, je suis $($this.Nom) et j'ai $($this.Age) ans."
}
}
$p=[Personne]::new("Alice",30)
Write-Output$p.Bonjour()
```
## Utilisation de PowerShell ISE
PowerShell ISE (Integrated Scripting Environment) est un environnement de développement intégré fourni avec Windows pour écrire, tester et exécuter des scripts PowerShell plus efficacement.
### Fonctionnalités principales :
-**Éditeur de script avec coloration syntaxique** : facilite la lecture et l'écriture du code.
-**Exécution interactive** : possibilité d'exécuter des parties de script sans exécuter l'ensemble.
-**Complétion automatique** : propose les cmdlets et leurs paramètres pour une saisie plus rapide.
-**Débogage intégré** : permet d'ajouter des points d'arrêt et de suivre l'exécution du script ligne par ligne.
### Exemple d'utilisation
1. Ouvrir PowerShell ISE : `Win + R` puis taper `powershell_ise`
2. Écrire un script dans l'éditeur :
```powershell
Write-Output"Bonjour depuis PowerShell ISE!"
```
3. Exécuter le script en cliquant sur le bouton "Exécuter" ou en appuyant sur `F5`.
PowerShell ISE est un outil idéal pour les débutants et les administrateurs souhaitant écrire et tester des scripts de manière interactive.
## Exécuter un script PowerShell
Un fichier PowerShell porte l'extension `.ps1`.
Pour exécuter un script :
```powershell
.\mon_script.ps1
```
⚠️ Par défaut, l'exécution des scripts peut être restreinte. Pour l'autoriser :
```powershell
Set-ExecutionPolicyRemoteSigned-ScopeCurrentUser
```
## Conclusion
PowerShell est un outil puissant pour l'automatisation sous Windows. Son approche orientée objet permet une manipulation avancée des données et une extensibilité accrue.