Créer et enregistrer des scripts dans Azure PowerShell

Effectué

Les tâches répétitives ou complexes nécessitent souvent beaucoup de temps d’administration. Les organisations préfèrent les automatiser pour réduire les coûts et éviter les erreurs.

L’automatisation est importante dans l’exemple d’entreprise fourni en lien avec la gestion de la relation client (CRM). Ici, vous testez vos logiciels sur plusieurs machines virtuelles Linux que vous devez supprimer et recréer en permanence. Vous souhaitez utiliser un script PowerShell pour automatiser la création de machines virtuelles au lieu de les créer manuellement chaque fois.

Au-delà de l’opération principale de création d’une machine virtuelle, vous avez d’autres exigences pour votre script :

  • Comme vous allez créer plusieurs machines virtuelles, vous souhaitez intégrer cette création à une boucle.
  • Étant donné que vous devez créer des machines virtuelles dans trois groupes de ressources distincts, le nom du groupe de ressources doit être transmis au script en tant que paramètre.

Cette section explique comment écrire et exécuter un script Azure PowerShell conforme à ces exigences.

Qu’est-ce qu’un script PowerShell ?

Un script PowerShell est un fichier texte contenant des commandes et des constructions de contrôle. Les commandes sont des cmdlets. Les constructions de contrôle sont des fonctionnalités de programmation fournies par PowerShell telles que des boucles, des variables, des paramètres, des commentaires, etc.

Les fichiers de script PowerShell ont une extension de fichier .ps1. Vous pouvez créer et enregistrer ces fichiers à l’aide de tout éditeur de texte.

Conseil

Si vous écrivez des scripts PowerShell sur Windows, vous pouvez utiliser l’Environnement d’écriture de scripts intégré (ISE) de Windows PowerShell. Cet éditeur fournit des fonctionnalités telles que la coloration syntaxique et la liste des applets de commande disponibles.

La capture d’écran suivante montre l’environnement d'écriture de scripts intégré (ISE) de Windows PowerShell avec un exemple de script pour vous connecter à Azure et créer une machine virtuelle dans Azure.

Screenshot of the Windows PowerShell Integrated Scripting Environment with a script to create a virtual machine open in the editing window.

Après avoir écrit le script, exécutez-le à partir de la ligne de commande PowerShell en spécifiant le nom du fichier précédé d’un point et d’une barre oblique inverse :

.\myScript.ps1

Techniques de PowerShell

PowerShell intègre de nombreuses fonctionnalités dans des langages de programmation classiques. Vous pouvez définir des variables, utiliser des branches et des boucles, capturer des paramètres en ligne de commande, écrire des fonctions, ajouter des commentaires, et bien plus encore. Nous aurons besoin de trois fonctionnalités pour notre script : variables, boucles et paramètres.

Variables

Dans l’unité précédente, vous avez vu que PowerShell prend en charge des variables. Utilisez $ pour déclarer une variable et = pour lui attribuer une valeur. Par exemple :

$loc = "East US"
$iterations = 3

Les variables peuvent contenir des objets. Par exemple, la définition suivante définit la variable adminCredential sur l’objet retourné par la cmdlet Get-Credential.

$adminCredential = Get-Credential

Pour obtenir la valeur stockée dans une variable, utilisez le préfixe $ et son nom, comme ci-dessous :

$loc = "East US"
New-AzResourceGroup -Name "MyResourceGroup" -Location $loc

Boucles

PowerShell a plusieurs structures de boucle, notamment For, Do...While et For...Each. La boucle For est celle qui correspond le mieux à nos besoins, car nous allons exécuter une applet de commande un nombre fixe de fois.

L’exemple suivant illustre la syntaxe de base. L’exemple s’exécute pour deux itérations et imprime la valeur de i chaque fois. Les opérateurs de comparaison sont -lt pour « inférieur à », -le pour « inférieur ou égal à », -eq pour « égal à », -ne pour « non égal à », etc.

For ($i = 1; $i -lt 3; $i++)
{
    $i
}

Paramètres

Quand vous exécutez un script, vous pouvez passer des arguments sur la ligne de commande. Vous pouvez fournir des noms pour chaque paramètre afin d’aider le script à extraire les valeurs. Par exemple :

.\setupEnvironment.ps1 -size 5 -location "East US"

Dans le script, vous capturez les valeurs dans des variables. Dans cet exemple, les paramètres sont mis en correspondance par nom :

param([string]$location, [int]$size)

Vous pouvez omettre les noms de la ligne de commande. Par exemple :

.\setupEnvironment.ps1 5 "East US"

Dans le script, vous dépendez de la position pour la mise en correspondance quand les paramètres ne sont pas nommés :

param([int]$size, [string]$location)

Nous pourrions prendre ces paramètres comme entrée et utiliser une boucle pour créer un ensemble de machines virtuelles à partir des paramètres donnés. Nous allons essayer cela plus tard.

La combinaison de PowerShell et d’Azure PowerShell vous offre tous les outils dont vous avez besoin pour automatiser Azure. Dans notre exemple CRM, nous allons pouvoir créer plusieurs machines virtuelles Linux en utilisant un paramètre pour conserver le caractère générique du script et une boucle pour éviter la répétition du code. Ce script nous permet d’exécuter une opération auparavant complexe en une seule étape.