Concepts fondamentaux de PowerShell
PowerShell n'est pas seulement un outil en ligne de commande ; sa philosophie de conception, son architecture fonctionnelle et son utilisation diffèrent considérablement des shells traditionnels.
1. Cmdlet : la plus petite unité de commande
Qu'est-ce qu'un Cmdlet ?
Un Cmdlet (prononcécommand-let) est l'unité de commande la plus élémentaire dans PowerShell. Les Cmdlets sont des classes basées sur .NET qui renvoient un ou plusieursobjets .NET。
Convention de nommage : Verbe-Nom
Chaque Cmdlet suit la convention de nommageverbe-nom, par exemple :
| Cmdlet | Signification |
|---|---|
Get-Process |
Obtenir des informations sur le processus |
Set-Item |
Définir la valeur d'un élément de ressource |
Remove-Item |
Supprimer des fichiers, des clés de registre, etc. |
New-User |
Créer un nouvel utilisateur (si le module AD est installé) |
PowerShell est fourni avec des centaines de Cmdlets, et des modules tiers peuvent en définir beaucoup plus.
Exemple
Get-Service Get-ChildItem -Path C:\Windows
Vous pouvez également utiliserGet-Commandpour afficher tous les Cmdlets disponibles :
Get-Command -CommandType Cmdlet
2. Pipeline d'objets
Quelle est la différence avec les pipes UNIX/Linux ?
Dans les shells traditionnels, le pipe (|) transmet des chaînes de texte. Dans PowerShell, cependant,le pipeline transmet des objets .NET complets。
Cela signifie que vous pouvez conserver des données structurées (propriétés, méthodes) pour un traitement ultérieur.
Exemple : filtrer les processus par utilisation CPU
Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object Name, CPU
Dans la commande ci-dessus :
Get-ProcessObtenir tous les processus (renvoie des objets)Where-ObjectFiltrer les processus avec une utilisation CPU supérieure à 100Select-ObjectAfficher uniquement leNameetCPUchamp
La beauté du pipeline d’objets
Vous n’avez pas besoin d’utiliser des outils commeawk、cut、greppour « analyser » la sortie ; au lieu de cela, vous travaillez directement avec les propriétés des objets.
3. Fournisseurs et PSDrive : abstraction des lecteurs de ressources
PowerShell offre un moyen unifié d’accéder aux ressources :le modèle de fournisseur, qui associe diverses ressources à des lecteurs virtuels (PSDrive), tout commeC:utiliser un lecteur.
Types de fournisseurs courants
| Provider | Lecteur d’exemple | Description |
|---|---|---|
| FileSystem | C:, D: |
Système de fichiers local |
| Registre | HKLM:, HKCU: |
Registre Windows |
| Environnement | Env: |
Variables d'environnement |
| Certificat | Cert: |
Magasin de certificats |
| Fonction | Function: |
Fonctions dans la session actuelle |
| Variable | Variable: |
Variables actuellement définies |
| Alias | Alias: |
Alias de commandes |
Exemple : Utilisation du registre
Get-ChildItem HKLM:\Software\Microsoft
Parcourez le registre comme vous parcourez des dossiers.
4. Scripts et modules : Organisation et réutilisation
Scripts (.ps1)
- Les scripts PowerShell sont des fichiers texte avec l'extension
.ps1extension - Ils contiennent une série de commandes, de structures de contrôle, de fonctions, etc.
Modules (.psm1 / .psd1)
Un module est une unité fonctionnelle réutilisable dans PowerShell. Il peut être :
- a
.psm1fichier (script de module) - un dossier contenant un
.psd1manifeste (module avancé)
Prise en charge des modules :
- Chargement automatique(chargé automatiquement lorsque ses fonctions sont utilisées)
- Gestion de versions
- Déclarations de dépendances
Afficher tous les modules du système :
Get-Module -ListAvailable
Importer un module :
Import-Module Az
5. Stratégie d’exécution
Pour empêcher l’exécution de scripts malveillants, PowerShell a introduit lastratégie d’exécution(Execution Policy), qui restreint.ps1le comportement d’exécution des fichiers de script.
Types de stratégies courants
| Politique | Signification |
|---|---|
| Restricted | Par défaut ; aucun script n'est autorisé à s'exécuter |
| RemoteSigned | Autorise l'exécution des scripts locaux ; les scripts distants doivent être signés |
| AllSigned | Tous les scripts doivent être signés |
| Bypass | Sans restriction ; non recommandé en production |
Définition de la stratégie d'exécution
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
⚠️ Remarque : la stratégie d'exécution n'affecte que les fichiers de script ; elle ne restreint pas les commandes saisies manuellement.
6. Gestion à distance (PowerShell Remoting)
PowerShell Remoting permet de se connecter à un autre ordinateur à distance et d'exécuter des commandes via le protocoleWS-MAN (basé sur WinRM)ouSSH.
Activation de WinRM (sur Windows)
Enable-PSRemoting -Force
Commandes courantes
# 建立远程会话
Enter-PSSession -ComputerName Server01
# 批量执行命令
Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Get-Service }
Remoting multiplateforme avec prise en charge de SSH
Enter-PSSession -HostName linux01 -User user1 -SSHTransport
7. Configuration d'état souhaité (DSC)
DSC (Configuration d'état souhaité) est laplateforme de configuration déclarativede PowerShell, utilisée pour définir l'"état souhaité" d'un système.
Il vous permet de :
- Définir les états des ressources avec des scripts de configuration (par exemple, un service doit être en cours d'exécution, un fichier doit exister)
- Configurer automatiquement la machine dans cet état
- Détecter la dérive et la corriger automatiquement
Comment l'utiliser
- Écrire un fichier de configuration (
.ps1) - Le compiler dans un fichier MOF
- Déployer en mode Push ou Pull
DSC est particulièrement utile pour la configuration de serveurs à grande échelle, les contrôles de conformité et le déploiement automatisé.
8. Découverte des commandes et système d’aide
PowerShell fournit un système d’aide riche qui vous permet d’explorer facilement les commandes :
Get-Help Get-Process: Afficher l’aide d’une commandeGet-Command: Lister toutes les commandesGet-Member: Afficher les propriétés et méthodes d’un objetGet-Help about_*: Afficher les documents de connaissances intégrés (tels queabout_Execution_Policies)
Exemple : affichage de la structure d’un objet
Get-Process | Get-Member
Résumé
| Concept | Kata kunci | Brève description | |
|---|---|---|---|
| Cmdlet | verb-noun |
Plus petite unité d’exécution, basée sur .NET | |
| Pipeline | ` | ` | Transmet des objets plutôt que du texte |
| Provider | FileSystem, Env: |
Accès unifié à diverses ressources | |
| Module | .psm1, .psd1 |
Organise des collections de commandes réutilisables | |
| Stratégie d'exécution | Set-ExecutionPolicy |
Contrôle les autorisations d'exécution des scripts | |
| Gestion à distance | Enter-PSSession |
Exécuter des commandes à distance | |
| DSC | Configuration |
Plateforme de configuration système déclarative | |
| Système d'aide | Get-Help |
Système de documentation intégré |