Exercice – Paramètres
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.
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.
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:pwshCré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.ps1Ajoutez 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-Archiveet utilise trois paramètres :-
-Pathest le répertoire des fichiers que vous souhaitez compresser. -
-CompressionLevelspécifie le niveau de compression à appliquer aux fichiers. -
-DestinationPathest le chemin d’accès au fichier compressé obtenu.
-
Exécutez le script :
./Backup.ps1Cette 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.
Ajoutez le code suivant en haut du fichier Backup.ps1 .
Notes
Utilisez la commande
code Backup.ps1pour ouvrir le fichier si l’éditeur n’est pas ouvert.Param( [string]$Path = './app', [string]$DestinationPath = './' )Vous avez ajouté deux paramètres à votre script :
$Pathet$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.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')"Renommez votre répertoire d’application en application web en exécutant cette commande :
mv app webappLe 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.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>.zipVous supprimez ce fichier pour vous assurer d’obtenir un message indiquant que votre valeur
$Pathn’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é.Exécutez votre script sans fournir de paramètres. (Le script utilisera les valeurs par défaut pour les paramètres.)
./Backup.ps1Vous 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>.zipLe 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
$Pathet de voir l’avantage qu’il y a à ajouter des paramètres à votre script.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>.zipVous 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).