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
Autres extensions