Exercice – Paramètres

Effectué

Une façon de rendre vos scripts flexibles est d’utiliser des paramètres afin que les utilisateurs puissent fournir une entrée quand le script s’exécute. Dans cet exercice, vous allez créer un script de sauvegarde et y ajouter des paramètres.

Notes

Cet exercice est facultatif. Si vous souhaitez effectuer cet exercice, vous devez créer un abonnement Azure avant de commencer. Si vous n’avez pas de compte Azure ou si vous ne souhaitez pas en créer un à ce stade, vous pouvez lire les instructions pour comprendre les informations qui sont présentées.

Notes

Dans cette unité, vous utilisez Azure Cloud Shell comme terminal. Vous pouvez accéder à Cloud Shell via le portail Azure ou la connexion Cloud Shell. Vous n’avez pas besoin d’installer quoi que ce soit sur votre PC ou ordinateur portable pour l’utiliser.

Créer un script de sauvegarde

Une tâche courante consiste à créer une sauvegarde. Une sauvegarde est généralement un fichier compressé qui stocke tous les fichiers appartenant, par exemple, à une application. Quand vous avez installé PowerShell, vous avez obtenu l’applet de commande Compress-Archive, qui peut vous aider à effectuer cette tâche.

  1. Ouvrez Azure Cloud Shell et exécutez ces commandes bash :

    mkdir app
    cd app
    touch index.html app.js
    cd ..
    

    Vous devez maintenant disposer d’un répertoire nommé application. Vous êtes prêt à travailler avec PowerShell.

  2. Dans le même terminal, démarrez un interpréteur de commandes PowerShell (s’il n’est pas déjà démarré) en exécutant pwsh:

    pwsh
    
  3. Créez un fichier de script nommé Backup.ps1 dans le répertoire actif et ouvrez-le dans votre éditeur de code.

    touch Backup.ps1
    code Backup.ps1
    
  4. Ajoutez ce contenu au fichier et enregistrez le fichier. Vous pouvez utiliser Ctrl-S sur Windows et Linux ou CMD+S sur Mac pour enregistrer.

    $date = Get-Date -format "yyyy-MM-dd"
    Compress-Archive -Path './app' -CompressionLevel 'Fastest' -DestinationPath "./backup-$date"
    Write-Host "Created backup at $('./backup-' + $date + '.zip')"
    

    Le script appelle Compress-Archive et utilise trois paramètres :

    • -Path est le répertoire des fichiers que vous souhaitez compresser.
    • -CompressionLevel spécifie le niveau de compression à appliquer aux fichiers.
    • -DestinationPath est le chemin d’accès au fichier compressé obtenu.
  5. Exécutez le script :

    ./Backup.ps1 
    

    Cette sortie doit s’afficher :

    Created backup at ./backup-<current date as YYYY-MM-DD>.zip
    

Ajouter des paramètres à votre script

Si vous ajoutez des paramètres à votre script, les utilisateurs peuvent fournir des valeurs lors de son exécution. Vous allez ajouter des paramètres à votre script de sauvegarde pour permettre la configuration des emplacements des fichiers sources et du fichier zip résultant.

  1. Ajoutez le code suivant en haut du fichier Backup.ps1 .

    Notes

    Utilisez la commande code Backup.ps1 pour ouvrir le fichier si l’éditeur n’est pas ouvert.

    Param(
      [string]$Path = './app',
      [string]$DestinationPath = './'
    )
    

    Vous avez ajouté deux paramètres à votre script : $Path et $DestinationPath. Vous avez également fourni des valeurs par défaut afin que les utilisateurs n’aient pas besoin de fournir ces valeurs. Les utilisateurs peuvent remplacer les valeurs par défaut si nécessaire. Vous devez ajuster le script pour utiliser ces paramètres. Il s’agit de notre prochaine tâche.

  2. Modifiez le code dans le fichier pour utiliser les paramètres, puis enregistrez le fichier. Backup.ps1 doit maintenant ressembler à ceci :

    Param(
      [string]$Path = './app',
      [string]$DestinationPath = './'
    )
    $date = Get-Date -format "yyyy-MM-dd"
    Compress-Archive -Path $Path -CompressionLevel 'Fastest' -DestinationPath "$($DestinationPath + 'backup-' + $date)"
    Write-Host "Created backup at $($DestinationPath + 'backup-' + $date + '.zip')"
    
  3. Renommez votre répertoire d’application en application web en exécutant cette commande :

    mv app webapp
    

    Le changement de nom du répertoire de l’application simule le fait que tous les répertoires que vous n’aurez pas besoin de sauvegarder seront appelés application.

    Vous ne pouvez plus vous fier à la valeur par défaut pour $Path. Vous devrez fournir une valeur via la console quand vous exécuterez le script.

  4. Supprimez votre fichier de sauvegarde, en remplaçant <current date as YYYY-MM-DD> par la date actuelle :

    rm backup-<current date as YYYY-MM-DD>.zip
    

    Vous supprimez ce fichier pour vous assurer d’obtenir un message indiquant que votre valeur $Path n’existe pas. Dans le cas contraire, vous obtiendriez un message concernant le fichier zip déjà existant et le problème que nous essayons de corriger serait masqué.

  5. Exécutez votre script sans fournir de paramètres. (Le script utilisera les valeurs par défaut pour les paramètres.)

    ./Backup.ps1
    

    Vous verrez un message d’erreur similaire au suivant :

    Line |
       8 |  Compress-Archive -Path $Path -CompressionLevel 'Fastest' -Destination …
         |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         | The path './app' either does not exist or is not a valid file system path.
    Created backup at ./backup-<current date as YYYY-MM-DD>.zip
    

    Le script vous informe qu’il ne peut pas trouver le répertoire ./app. Il est désormais temps de fournir une valeur au paramètre $Path et de voir l’avantage qu’il y a à ajouter des paramètres à votre script.

  6. Testez votre script en l’exécutant :

    ./Backup.ps1 -Path './webapp'
    

    Vous verrez un message similaire à celui que vous avez obtenu précédemment :

    Created backup at ./backup-<current date as YYYY-MM-DD>.zip
    

    Vous pouvez maintenant utiliser des paramètres si le répertoire que vous souhaitez sauvegarder n’est pas appelé ./app ou si vous souhaitez placer le fichier compressé quelque part autre que le répertoire actif.

Félicitations ! Vous avez créé un script de sauvegarde utilisable chaque fois que vous souhaitez créer une sauvegarde pour un répertoire d’applications ou tout autre répertoire important. Vous avez ensuite identifié des parties de votre script qui peuvent être amenées à changer souvent et vous avez remplacé des valeurs statiques par des valeurs de paramètre. De cette façon, vous n’aurez probablement pas besoin de modifier le script lui-même lorsque vos besoins changeront (par exemple, si le nom de l’application est modifié ou si vous devez modifier le chemin de destination).