Commit 1f64e0f3 authored by Fabrice's avatar Fabrice
Browse files

Ajout fiche powershell

parent fb4a76b4
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -35,10 +35,12 @@
- [Fiche 2 Fonctionnement d'un système d'exploitation](Systeme-Exploitation/Fiche2-FonctionnementSystemeDexploitation.md)
- [Fiche 3 Mémento commandes de base Linux](Systeme-Exploitation/Fiche3-MementoCommandesDeBase.md)
- [Fiche 4 Commandes bash avancées](Systeme-Exploitation/Fiche4-CommandesBashAvancees.md)
- [Fiche 5 Programmation bash notions de base](Systeme-Exploitation/Fiche5-MementoCommandesGit.md)
- [Fiche 6 Programmation bash Structures conditionnelles](Systeme-Exploitation/Fiche7-ProgrammationBash-StructuresConditionnelles.md)
- [Fiche 7 Programmation bash Structures itératives](Systeme-Exploitation/Fiche8-ProgrammationBash-StructuresIteratives.md)
- [Fiche 8 Programmation bash Fonctions](Systeme-Exploitation/Fiche9-ProgrammationBash-Fonctions.md)
- [Fiche 5 Memento commandes Git](Systeme-Exploitation/Fiche5-MementoCommandesGit.md)
- [Fiche 6 Programmation bash notions de base](Systeme-Exploitation/Fiche6-ProgrammationBash-NotionsDeBase.md)
- [Fiche 7 Programmation bash Structures conditionnelles](Systeme-Exploitation/Fiche7-ProgrammationBash-StructuresConditionnelles.md)
- [Fiche 8 Programmation bash Structures itératives](Systeme-Exploitation/Fiche8-ProgrammationBash-StructuresIteratives.md)
- [Fiche 9 Programmation bash Fonctions](Systeme-Exploitation/Fiche9-ProgrammationBash-Fonctions.md)
- [Fiche 10 Programmation Powershell](Systeme-Exploitation/Fiche10-ProgrammationPowerShell.md)

### Front-end web HTML CSS JavaScript
- [Fiche 1 Notions de base HTML](Front-end-web-HTML-CSS-JS/Fiche1-HtmlNotionsDeBase.md)
+135 −0
Original line number Diff line number Diff line
# 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.).
- **Changer de répertoire**
  - DOS : `cd NomDossier`
  - PowerShell : `Set-Location NomDossier`
- **Copier un fichier**
  - DOS : `copy fichier.txt C:\destination`
  - PowerShell : `Copy-Item fichier.txt -Destination C:\destination`
- **Supprimer un fichier**
  - DOS : `del fichier.txt`
  - PowerShell : `Remove-Item fichier.txt`

Exemple d'utilisation d'un cmdlet :
```powershell
Get-Process | Select-Object Name, Id
```
Cette commande récupère la liste des processus et affiche leurs noms et identifiants.

## Pipeline et manipulation des objets
Le pipeline (`|`) permet de chaîner des cmdlets pour traiter des objets de manière fluide.

Exemple :
```powershell
Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object Name, DisplayName
```
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 ($p in $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.

Exemple :
```powershell
$items = Get-ChildItem
$items[0].Name  # Affiche le nom du premier élément
```

### Création d'un objet personnalisé
```powershell
$obj = New-Object PSObject -Property @{Nom="Utilisateur"; Age=25}
Write-Output $obj.Nom
```

### Définition d'une classe
Depuis PowerShell 5.0, on peut définir des classes :
```powershell
class Personne {
    [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-ExecutionPolicy RemoteSigned -Scope CurrentUser
```

## 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.