Scripting PowerShell
Introduction
PowerShell est un puissant langage de script en ligne de commande. Non seulement il peut exécuter des commandes de manière interactive, mais il peut également combiner des commandes dans des fichiers de script pour accomplir des tâches d'automatisation complexes.
Cet article vous guidera pas à pas à travers les compétences de base du développement de scripts PowerShell, notamment :
- Comment créer et exécuter
.ps1scripts - Comment définir et utiliser des fonctions
- Comment effectuer un développement modulaire et réutiliser la logique de votre script
1. Prise en main des scripts PowerShell
Création de fichiers de script (.ps1)
Les fichiers de script PowerShell sont des fichiers texte brut avec l'.ps1extension, contenant un ensemble de commandes PowerShell à exécuter.
Exemple : hello.ps1
# hello.ps1 Write-Output "Hello from PowerShell script!"
Vous pouvez utiliser n'importe quel éditeur de texte (VS Code recommandé) pour créer.ps1des fichiers.
Stratégie d'exécution
Pour des raisons de sécurité, Windows par défautne permet pas d'exécuter des scripts, vous devez donc définir la stratégie d'exécution.
Afficher la stratégie actuelle :
Get-ExecutionPolicy
Définir temporairement pour autoriser les scripts locaux à s'exécuter :
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
RemoteSigned : les scripts locaux peuvent s'exécuter sans signature, mais les scripts téléchargés doivent être signés par un éditeur de confiance.
Exécution de scripts
Exécuter depuis la ligne de commande :
.\hello.ps1
Spécifier l'exécuteur PowerShell à exécuter :
powershell.exe -File .\hello.ps1 pwsh.exe -File .\hello.ps1 # PowerShell 7+
Clic droit sur "Exécuter avec PowerShell" (nécessite des paramètres de stratégie)
Passage et gestion des paramètres
Vous pouvez définir des façons d'accepter des paramètres externes dans un script :
Exemple : script avec paramètres greet.ps1
param (
[string]$name,
[int]$age
)
Write-Output "你好,$name,你的年龄是 $age 岁。"
Passer des paramètres lors de l’exécution :
.\greet.ps1 -name "小明" -age 18
Prend également en charge les valeurs par défaut et la validation des paramètres :
param (
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$City = "北京"
)
2. Utilisation des fonctions
Définition et appel de fonctions
function Say-Hello {
Write-Output "Hello from function"
}
Say-Hello
Déclaration et validation des paramètres
Les fonctions peuvent également avoir des paramètres, définis à l’aide d’unparambloc :
function Add-Numbers {
param (
[int]$a,
[int]$b
)
return $a + $b
}
Add-Numbers -a 3 -b 5 # 输出 8
Les paramètres positionnels peuvent également être utilisés :
function Add {
param ($x, $y)
$x + $y
}
Add 10 20
Gestion des valeurs de retour
Les fonctions PowerShell renvoient toute la sortie par défaut (y comprisWrite-Output)。
Il est recommandé d'utiliserreturnpour retourner explicitement :
function Get-Square {
param ([int]$num)
return $num * $num
}
$result = Get-Square -num 6
Write-Output $result
Portée des fonctions
Les variables définies à l'intérieur d'une fonction sont des variables locales par défaut :
function Demo-Scope {
$message = "Hello"
}
Demo-Scope
Write-Output $message # 无法访问
Pour accéder aux variables depuis l'extérieur, vous pouvez utiliser des préfixes de portée :
$global:x = 5
3. Développement modulaire
Qu'est-ce qu'un module PowerShell
Un module est un ensemble de plusieurs fonctions, scripts et ressources, utilisé pour organiser le code et faciliter la réutilisation.
Types de modules courants :
- Modules de script (
.psm1) - Modules de manifeste (
.psd1) - Modules binaires (.dll)
Importation et utilisation de modules
UtiliserImport-Modulepour importer un module :
Import-Module MyModule.psm1
Afficher les modules chargés :
Get-Module
Appeler des fonctions dans un module :
Say-Hello
Introduction à PowerShell Gallery
PowerShell GalleryC'est le dépôt officiel de modules pour PowerShell, où vous pouvez télécharger et installer des milliers de modules.
Exemple d'installation d'un module :
Install-Module -Name PSReadLine
Mettre à jour un module :
Update-Module PSReadLine
Création d'un module personnalisé simple
Créez un nouveau fichier MyModule.psm1 et ajoutez des fonctions :
# MyModule.psm1
function Greet-User {
param ([string]$name)
Write-Output "欢迎你,$name"
}
Importez-le et appelez-le dans un script :
Import-Module .\MyModule.psm1 Greet-User -name "小红"
Astuce : vous pouvez placer les fichiers de module dans les chemins de
$env:PSModulePathafin que le système les reconnaisse automatiquement.
4. Résumé
| Contenu | Description |
|---|---|
.ps1Fichier |
Extension de script PowerShell, stockant des commandes |
param |
Utilisé pour définir les paramètres de script/fonction |
Set-ExecutionPolicy |
Contrôle si les scripts sont autorisés à s'exécuter |
| Fonction | Encapsule du code réutilisable, ce qui améliore la clarté structurelle |
Module (.psm1) |
Organise plusieurs fonctions, ce qui permet la portabilité |
| PowerShell Gallery | Dépôt officiel de modules, où vous pouvez télécharger des modules tiers |