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 à 100
  • Select-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

  1. Écrire un fichier de configuration (.ps1)
  2. Le compiler dans un fichier MOF
  3. 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 commande
  • Get-Command: Lister toutes les commandes
  • Get-Member: Afficher les propriétés et méthodes d’un objet
  • Get-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é
Autres extensions