Übung: Parameter

Abgeschlossen

Eine Möglichkeit, Ihre Skripts flexibel zu gestalten, besteht darin, Parameter zu verwenden, damit Benutzer beim Ausführen des Skripts Eingaben bereitstellen können. In dieser Übung erstellen Sie ein Sicherungsskript und fügen ihm Parameter hinzu.

Hinweis

Diese Übung ist optional. Wenn Sie diese Übung abschließen möchten, müssen Sie ein Azure-Abonnement erstellen, bevor Sie beginnen. Wenn Sie nicht über ein Azure-Konto verfügen oder derzeit kein Azure-Konto erstellen möchten, können Sie die Anweisungen durchlesen, damit Sie die informationen verstehen, die präsentiert werden.

Hinweis

In dieser Einheit verwenden Sie Azure Cloud Shell als Terminal. Sie können über das Azure-Portal oder die Cloud Shell-Anmeldung auf die Cloud Shell zugreifen. Sie müssen nichts auf Ihrem PC oder Laptop installieren, um es zu verwenden.

Erstellen eines Sicherungsskripts

Eine häufige Aufgabe besteht darin, eine Sicherung zu erstellen. Eine Sicherung ist in der Regel eine komprimierte Datei, in der alle Dateien gespeichert werden, die z. B. zu einer App gehören. Als Sie PowerShell installiert haben, haben Sie das Cmdlet Compress-Archive erhalten, mit dem Sie diese Aufgabe ausführen können.

  1. Öffnen Sie die Azure Cloud Shell , und führen Sie die folgenden Bash-Befehle aus:

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

    Sie sollten jetzt über ein Verzeichnis mit dem Namen "App" verfügen. Sie können jetzt mit PowerShell arbeiten.

  2. Starten Sie im selben Terminal eine PowerShell-Shell (sofern noch nicht gestartet), indem Sie pwsh ausführen:

    pwsh
    
  3. Erstellen Sie eine Skriptdatei namens Backup.ps1 im aktuellen Verzeichnis, und öffnen Sie sie in Ihrem Code-Editor.

    touch Backup.ps1
    code Backup.ps1
    
  4. Fügen Sie der Datei diesen Inhalt hinzu, und speichern Sie die Datei. Sie können STRG-S unter Windows und Linux oder CMD+S auf dem Mac zum Speichern verwenden.

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

    Das Skript ruft Compress-Archive auf und verwendet drei Parameter:

    • -Path ist das Verzeichnis der Dateien, die Sie komprimieren möchten.
    • -CompressionLevel gibt an, wie viel die Dateien komprimiert werden.
    • -DestinationPath ist der Pfad zur resultierenden komprimierten Datei.
  5. Ausführen des Skripts:

    ./Backup.ps1 
    

    Die folgende Ausgabe sollte angezeigt werden:

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

Hinzufügen von Parametern zum Skript

Wenn Sie Ihrem Skript Parameter hinzufügen, können Benutzer Werte angeben, wenn es ausgeführt wird. Sie fügen Ihrem Sicherungsskript Parameter hinzu, um die Konfiguration der Speicherorte der Quelldateien und der resultierenden ZIP-Datei zu ermöglichen.

  1. Fügen Sie oben in der dateiBackup.ps1 den folgenden Code hinzu.

    Hinweis

    Verwenden Sie den Befehl code Backup.ps1, um die Datei zu öffnen, wenn der Editor nicht geöffnet ist.

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

    Sie haben Ihrem Skript zwei Parameter hinzugefügt: $Path und $DestinationPath. Sie haben auch Standardwerte angegeben, damit Benutzer die Werte nicht bereitstellen müssen. Benutzer können die Standardwerte bei Bedarf außer Kraft setzen. Sie müssen das Skript anpassen, um diese Parameter zu verwenden. Dies werden Sie als Nächstes tun.

  2. Ändern Sie den Code in der Datei, um die Parameter zu verwenden, und speichern Sie die Datei dann. Backup.ps1 sollte jetzt wie folgt aussehen:

    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. Benennen Sie Ihr App-Verzeichnis in Webapp um, indem Sie diesen Befehl ausführen:

    mv app webapp
    

    Durch das Umbenennen des App-Verzeichnisses wird simuliert, dass nicht alle Verzeichnisse, die Sie sichern müssen, als App bezeichnet werden.

    Sie können sich nicht mehr auf den Standardwert für $Path verlassen. Sie müssen über die Konsole einen Wert bereitstellen, wenn Sie das Skript ausführen.

  4. Entfernen Sie Ihre Sicherungsdatei, und ersetzen Sie <current date as YYYY-MM-DD> durch das aktuelle Datum:

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

    Sie entfernen diese Datei, um sicherzustellen, dass Sie eine Meldung mit dem Hinweis erhalten, dass Ihr $Path-Wert nicht vorhanden ist. Andernfalls erhalten Sie eine Meldung über die bereits vorhandene ZIP-Datei, und das Problem, das wir beheben möchten, wäre nicht sichtbar.

  5. Führen Sie Ihr Skript aus, ohne Parameter bereitzustellen. (Das Skript verwendet Standardwerte für die Parameter.)

    ./Backup.ps1
    

    Es wird eine Fehlermeldung ähnlich der folgenden angezeigt:

    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
    

    Das Skript benachrichtigt Sie darüber, dass es das Verzeichnis nicht finden kann. /app. Jetzt stellen Sie einen Wert für den $Path-Parameter bereit und sehen dabei, welche Vorteile das Hinzufügen von Parametern zu Ihrem Skript bietet.

  6. Testen Sie Ihr Skript, indem Sie es ausführen:

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

    Es wird eine ähnliche Meldung wie zuvor angezeigt:

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

    Sie können jetzt Parameter verwenden, wenn das zu sichernde Verzeichnis nicht als ./app bezeichnet wird oder wenn Sie die komprimierte Datei an einer anderen Stelle als dem aktuellen Verzeichnis ablegen möchten.

Herzlichen Glückwunsch. Sie haben ein Sicherungsskript erstellt, das Sie immer dann verwenden können, wenn Sie eine Sicherung für ein „app“-Verzeichnis oder ein anderes wichtiges Verzeichnis erstellen möchten. Dann haben Sie Teile Ihres Skripts identifiziert, die sich eventuell öfters ändern, und statische Werte durch Parameterwerte ersetzt. Auf diese Weise brauchen Sie das eigentliche Skript wahrscheinlich nicht zu ändern, wenn sich Ihre Anforderungen ändern (wenn sich beispielsweise der Name der App ändert oder Sie den Zielpfad ändern müssen).