Erstellen einer Azure-Ressource mithilfe von Skripts in Azure PowerShell

Abgeschlossen

Im interaktiven Modus können Sie mit Azure PowerShell Befehle schreiben und diese sofort ausführen.

Denken Sie daran, dass das übergeordnete Ziel im CRM-Beispiel (Customer Relationship Management) darin besteht, drei Testumgebungen zu erstellen, die virtuelle Computer enthalten. Sie verwenden Ressourcengruppen, um sicherzustellen, dass die VMs in separaten Umgebungen organisiert sind: eine für Komponententests, eine für Integrationstests und eine für Akzeptanztests. Sie müssen die Ressourcengruppen nur einmal erstellen. Daher ist das Verwenden des interaktiven Modus von PowerShell in diesem Fall eine gute Wahl.

Wenn Sie einen Befehl in PowerShell eingeben, stimmt PowerShell den Befehl mit einem Cmdlet ab und führt dann die angeforderte Aktion aus. Sie werden sich zuerst einige gängige Befehle ansehen, die Sie verwenden können. Anschließend erfahren Sie, wie Sie den Azure-Support für PowerShell installieren können.

Was sind PowerShell-Cmdlets?

Ein PowerShell-Befehl wird als Cmdlet (ausgesprochen: „Command-let“) bezeichnet. Ein Cmdlet ist ein Befehl, der ein einzelnes Feature bearbeitet. Der Begriff Cmdlet soll „kleiner Befehl“ implizieren. Laut Konvention werden Cmdlet-Autor*innen aufgefordert, Cmdlets einfach zu halten und nur für einen einzigen Zweck zu erstellen.

Im PowerShell-Basisprodukt sind Cmdlets enthalten, die mit Features wie Sitzungen und Hintergrundaufträgen funktionieren. Sie können Ihrer PowerShell-Installation Module hinzufügen, um Cmdlets zu erhalten, die andere Features ändern können. Es gibt z.B. Drittanbietermodule für die Arbeit mit FTP, das Verwalten Ihres Betriebssystems oder das Zugreifen auf das Dateisystem.

Cmdlets befolgen eine Verb-Substantiv-Namenskonvention, z. B. Get-Process, Format-Table und Start-Service. Es gibt ebenfalls eine Konvention für die Auswahl des Verbs, z.B. „get“ zum Abrufen von Daten, „set“ zum Einfügen oder Aktualisieren von Daten, „format“ zum Formatieren von Daten oder „out“, um die Ausgabe einem Ziel zuzuweisen.

Cmdlet-Autoren wird empfohlen, eine Hilfedatei für jedes Cmdlet einzufügen. Das Cmdlet Get-Help zeigt die Hilfsdatei für jedes Cmdlet an. Geben Sie die folgende Anweisung in einer Windows PowerShell-Sitzung ein, um beispielsweise Hilfe zu dem Cmdlet Get-ChildItem zu erhalten:

Get-Help -Name Get-ChildItem -Detailed

Was ist ein PowerShell-Modul?

Cmdlets werden als Teile von Modulen bereitgestellt. Ein PowerShell-Modul ist eine Dynamic Link Library (DLL), die den Code zum Verarbeiten der einzelnen verfügbaren Cmdlets enthält. Sie laden Cmdlets in PowerShell, indem Sie das Modul laden, in dem sie enthalten sind. Eine Liste mit den geladenen Modulen können Sie mit dem Befehl Get-Module anzeigen:

Get-Module

Die Ausgabe dieser Befehle sieht in etwa wie folgt aus:

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Binary     1.0.0.1    PackageManagement                   {Find-Package, Find-PackageProvider, Get-Package, Get-Pack...
Script     1.0.0.1    PowerShellGet                       {Find-Command, Find-DscResource, Find-Module, Find-RoleCap...
Script     2.0.0      PSReadline                          {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PS...

Was ist das Az PowerShell-Modul?

Az ist der formelle Name des Azure PowerShell-Moduls, das die Cmdlets enthält, die mit den Azure-Features zusammenarbeiten sollen. Es enthält hunderte Cmdlets, mit denen Sie nahezu jeden Aspekt jeder Azure-Ressource regulieren können. Sie können mit Ressourcengruppen, Speicher, VMs, Microsoft Entra ID, Containern, maschinellem Lernen usw. arbeiten. Das Modul Az ist eine Open-Source-Komponente, die auf GitHub verfügbar ist.

Hinweis

Möglicherweise haben Sie bereits Azure PowerShell-Befehle gesehen oder verwendet, für die ein -AzureRM-Format verwendet wurde. Die Az PowerShell-Module bieten nun die gleichen Funktionen wie AzureRM PowerShell-Module und weitere Funktionen, daher werden die AzureRM PowerShell-Module am 29 Februar 2024 ausgemustert. Um Dienstunterbrechungen zu vermeiden, müssen Sie bis zum 29. Februar 2024 die Skripts aktualisieren, die AzureRM PowerShell-Module verwenden. Befolgen Sie zum automatischen Aktualisieren Ihrer Skripts die Schnellstartanleitung.

Installieren Sie das Az-Modul von PowerShell.

Das Az PowerShell-Modul ist über ein globales Repository mit dem Namen „PowerShell-Katalog“ verfügbar. Sie können das Modul über das Cmdlet Install-Module auf Ihrem lokalen Computer installieren.

Führen Sie die folgenden Befehle aus, um die neuesten Azure Az PowerShell-Module zu installieren:

  1. Öffnen Sie das Menü Start, und geben Sie PowerShell ein.

  2. Wählen Sie das PowerShell-Symbol aus.

  3. Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE:

    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery
    

Durch den vorherigen Befehl wird das Modul für den oder die aktuelle*n Benutzer*in durch den Parameter Scope gesteuert installiert.

Der Befehl basiert zum Abrufen von Komponenten auf NuGet. Je nach installierter Version werden Sie ggf. aufgefordert, die aktuelle Version von NuGet herunterzuladen und zu installieren.

NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet
 provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\<username>\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running
'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import
 the NuGet provider now?
 [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

Geben Sie Y ein, und drücken Sie die EINGABETASTE.

Standardmäßig ist der PowerShell-Katalog nicht als vertrauenswürdiges Repository für PowerShellGet konfiguriert. Jedes Mal, wenn Sie eine Installation aus einem nicht vertrauenswürdigen Repository ausführen, werden Sie aufgefordert, zu bestätigen, dass Sie das Modul mit der folgenden Ausgabe installieren möchten:

You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

Geben Sie Y oder A ein, und drücken Sie dann die EINGABETASTE.

Fehler bei der Skriptausführung

Abhängig von Ihrer Sicherheitskonfiguration tritt für Import-Module unter Umständen ein Fehler der folgenden Art auf:

import-module : File C:\Program Files\PowerShell\Modules\az\6.3.0\Az.psm1 cannot be loaded
because running scripts is disabled on this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ import-module Az
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [Import-Module], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

Möglicherweise funktioniert das auch nicht, und das Programm reagiert überhaupt nicht. Drücken Sie in diesem Fall STRG+C, um das Programm zu beenden.

Beide Verhaltensweisen deuten in der Regel darauf hin, dass die Ausführungsrichtlinie „eingeschränkt“ ist. Das bedeutet, dass Sie keine Module ausführen können, die Sie aus einer externen Quelle herunterladen (einschließlich des PowerShell-Katalogs). Sie können dies überprüfen, indem Sie das Cmdlet Get-ExecutionPolicy ausführen. Wenn das Cmdlet „Restricted“ zurückgibt:

  1. Verwenden Sie das Cmdlet Set-ExecutionPolicy, um die Richtlinie in „RemoteSigned“ zu ändern:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    Sie werden aufgefordert, die Berechtigung zu erteilen:

    The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
    you to the security risks described in the about_Execution_Policies help topic at
    https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y
    
  2. Geben Sie Y oder A ein, und drücken Sie dann die EINGABETASTE.

  3. Verwenden Sie an der Eingabeaufforderung den Pfeil nach oben auf der Tastatur, und starten Sie den Befehl Install-Module für Azure erneut.

Sie sollten sehen, dass das Az-Modul geladen wird. Nach dem Abschluss der Vorgangs können Sie Import-Module verwenden, um die Cmdlets zu laden.

Für die Installation von Azure PowerShell unter Linux oder macOS werden dieselben Befehle verwendet.

  1. Führen Sie in einem Terminal den folgenden Befehl aus, um PowerShell zu starten.

    pwsh
    
  2. Führen Sie den folgenden Befehl an der PowerShell-Eingabeaufforderung auf, um Azure PowerShell zu installieren.

    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
    
  3. Wenn Sie gefragt werden, ob Sie Modulen von PSGallery vertrauen, antworten Sie Ja oder Ja, alle.

Aktualisieren eines PowerShell-Moduls

Möglicherweise erhalten Sie eine Warn- oder Fehlermeldung, wenn bereits eine Version des Azure PowerShell-Moduls installiert ist. Wenn ja, können Sie den folgenden Befehl zum Aktualisieren auf die aktuelle Version ausführen.

Update-Module -Name Az

Antworten Sie wie beim Cmdlet Install-Module entweder mit Ja oder Ja, alle auf die Frage, ob Sie dem Modul vertrauen. Sie können auch den Befehl Update-Module verwenden, um ein Modul neu zu installieren, falls Probleme mit diesem auftreten.

Beispiel: Erstellen einer Ressourcengruppe mit Azure PowerShell

Nachdem Sie das Azure-Modul installiert haben, können Sie mit der Arbeit mit Azure beginnen. Wir führen eine häufige Aufgabe durch: das Erstellen einer Ressourcengruppe. Wie Sie wissen, verwenden wir Ressourcengruppen, um zusammengehörige Ressourcen gemeinsam zu verwalten. Die Erstellung einer neuen Ressourcengruppe ist eine der ersten Aufgaben, die Sie beim Starten einer neuen Azure-Lösung durchführen.

Dazu müssen vier Schritte ausgeführt werden:

  1. Importieren Sie die Azure-Cmdlets.

  2. Stellen Sie eine Verbindung mit Ihrem Azure-Abonnement her.

  3. Erstellen Sie die Ressourcengruppe.

  4. Überprüfen Sie, ob sie erfolgreich erstellt wurde.

Die folgende Abbildung zeigt eine Übersicht dieser Schritte:

Diagram showing the steps to create a resource group.

Jeder Schritt entspricht einem anderen Cmdlet.

Importieren der Azure-Cmdlets

Ab PowerShell 3.0 werden Module automatisch geladen, wenn Sie ein Cmdlet innerhalb dieses Moduls verwenden. Es ist nicht mehr erforderlich, PowerShell-Module manuell zu importieren, es sei denn, Sie haben die Standardeinstellungen zum automatischen Laden von Modulen geändert.

Verbinden

Wenn Sie mit einer lokalen Installation von Azure PowerShell arbeiten, müssen Sie sich zunächst authentifizieren, um Azure-Befehle ausführen zu können. Das Cmdlet Connect-AzAccount fordert Sie zur Eingabe Ihrer Azure-Anmeldeinformationen auf, und stellt dann eine Verbindung mit Ihrem Azure-Abonnement her. Es gibt viele optionale Parameter. Wenn Sie jedoch nur eine interaktive Eingabeaufforderung benötigen, sind keine Parameter erforderlich:

Connect-AzAccount

Arbeiten mit Abonnements

Falls Sie noch keine Erfahrung mit Azure haben, verfügen Sie wahrscheinlich nur über ein Einzelabonnement. Wenn Sie Azure jedoch schon eine Weile verwenden, haben Sie unter Umständen bereits mehrere Azure-Abonnements erstellt. Sie können Azure PowerShell so konfigurieren, dass Befehle für ein bestimmtes Abonnement ausgeführt werden.

Hierfür kann nur jeweils ein Abonnement verwendet werden. Verwenden Sie das Cmdlet Get-AzContext, um zu ermitteln, welches Abonnement aktiv ist. Wenn dieses nicht das richtige ist, können Sie Abonnements mithilfe eines anderen Cmdlets ändern.

  1. Rufen Sie mit dem Befehl Get-AzSubscription eine Liste mit allen Abonnementnamen Ihres Kontos ab.

  2. Ändern Sie das Abonnement, indem Sie den Namen des gewünschten Abonnements übergeben.

Set-AzContext -Subscription '00000000-0000-0000-0000-000000000000'

Wenn Sie die Abonnement-ID nachschlagen möchten, wechseln Sie zum Azure-Portal, und wählen Sie auf der Homepage Abonnements aus.

Abrufen einer Liste mit allen Ressourcengruppen

Sie können eine Liste mit allen Ressourcengruppen des aktiven Abonnements abrufen.

Get-AzResourceGroup

Wenn Sie eine kürzere Übersicht erhalten möchten, können Sie die Ausgabe von Get-AzResourceGroup per Pipezeichen („|“) an das Cmdlet Format-Table senden.

Get-AzResourceGroup | Format-Table

Die Ausgabe sieht in etwa wie folgt aus:

ResourceGroupName                  Location       ProvisioningState Tags TagsTable ResourceId
-----------------                  --------       ----------------- ---- --------- ----------
cloud-shell-storage-southcentralus southcentralus Succeeded                        /subscriptions/00000000-0000-0000...
ExerciseResources                  eastus         Succeeded                        /subscriptions/00000000-0000-0000...

Erstellen einer Ressourcengruppe

Wie Sie wissen, werden Ressourcen bei ihrer Erstellung in Azure zu Verwaltungszwecken immer in einer Ressourcengruppe gespeichert. Eine Ressourcengruppe ist häufig eine der ersten Komponenten, die Sie beim Starten einer neuen Anwendung erstellen.

Sie können Ressourcengruppen erstellen, indem Sie das Cmdlet New-AzResourceGroup verwenden. Sie müssen einen Namen und einen Standort angeben. Der Name muss innerhalb Ihres Abonnements eindeutig sein. Der Standort bestimmt, wo die Metadaten für Ihre Ressourcengruppe gespeichert werden (was für Sie aus Konformitätsgründen wichtig sein kann). Verwenden Sie Zeichenfolgen wie „USA, Westen“, „Europa, Norden“ oder „Indien, Westen“, um den Standort anzugeben. Wie die meisten Azure-Cmdlets verfügt auch New-AzResourceGroup über viele optionale Parameter. Die Kernsyntax lautet jedoch wie folgt:

New-AzResourceGroup -Name <name> -Location <location>

Hinweis

Denken Sie daran, dass Sie in einer aktiven Azure-Sandbox arbeiten werden, die die Ressourcengruppe für Sie erstellt. Verwenden Sie den vorherigen Befehl, wenn Sie lieber in Ihrem eigenen Abonnement arbeiten möchten.

Überprüfen der Ressourcen

Get-AzResource listet Ihre Azure-Ressourcen auf. Dies ist hier hilfreich, um zu überprüfen, ob die Ressourcen erstellt wurden und ob die Erstellung der Ressourcengruppe erfolgreich war.

Get-AzResource

Wie mit dem Befehl Get-AzResourceGroup können Sie auch mit dem Cmdlet Format-Table eine übersichtlichere Ansicht erhalten:

Get-AzResource | Format-Table

Sie können auch nach bestimmten Ressourcengruppen filtern, um nur die Ressourcen aufzulisten, die dieser Gruppe zugeordnet sind:

Get-AzResource -ResourceGroupName ExerciseResources

Erstellen eines virtuellen Azure-Computers

Eine weitere häufige Aufgabe, die Sie mit PowerShell ausführen können, ist das Erstellen von VMs.

Azure PowerShell stellt das Cmdlet New-AzVm bereit, um einen virtuellen Computer zu erstellen. Das Cmdlet hat viele Parameter, um die große Anzahl von Konfigurationseinstellungen für virtuelle Computer zu verarbeiten. Die meisten Parameter haben sinnvolle Standardwerte, deshalb müssen Sie nur fünf Werte angeben:

  • ResourceGroupName: Die Ressourcengruppe, in der der neue virtuelle Computer platziert werden sollte.
  • Name: Der Name des virtuellen Computers in Azure.
  • Location: Der geografische Standort, in dem der virtuelle Computer bereitgestellt werden soll.
  • Anmeldeinformationen: Ein Objekt, das den Benutzernamen und das Kennwort für das Administratorkonto des virtuellen Computers enthält. Wir verwenden das Cmdlet Get-Credential. Bei diesem Cmdlet werden ein Benutzername und ein Kennwort abgefragt und in einem Objekt für Anmeldeinformationen gepackt.
  • Image: Das Betriebssystemimage, das für die VM verwendet wird, bei dem es sich in der Regel um eine Linux-Distribution oder eine Windows Server-Instanz handelt.
   New-AzVm
       -ResourceGroupName <resource group name>
       -Name <machine name>
       -Credential <credentials object>
       -Location <location>
       -Image <image name>

Wie im vorherigen Beispiel können Sie diese Parameter direkt für das vorherige Cmdlet bereitstellen. Alternativ hierzu können Sie auch andere Cmdlets verwenden, um den virtuellen Computer zu konfigurieren, z. B. Set-AzVMOperatingSystem, Set-AzVMSourceImage, Add-AzVMNetworkInterface und Set-AzVMOSDisk.

Hier ist ein Beispiel angegeben, in dem das Cmdlet Get-Credential mit dem Parameter -Credential verknüpft wird:

New-AzVM -Name MyVm -ResourceGroupName ExerciseResources -Credential (Get-Credential) ...

Das Suffix AzVM gilt speziell für VM-basierte Befehle in PowerShell. Es gibt noch mehrere andere, die Sie verwenden können:

Befehl Beschreibung
Remove-AzVM Löscht eine Azure-VM
Start-AzVM Startet eine beendete VM
Stop-AzVM Beendet die Ausführung einer VM
Restart-AzVM Startet einen virtuellen Computer neu.
Update-AzVM Aktualisiert die Konfiguration für eine VM

Beispiel: Abrufen der Informationen für eine VM

Sie können die VMs in Ihrem Abonnement auflisten, indem Sie den Befehl Get-AzVM -Status verwenden. Dieser Befehl unterstützt auch das Eingeben einer bestimmten VM, indem die Eigenschaft -Name eingeschlossen wird. Hier erfolgt die Zuweisung zu einer PowerShell-Variablen:

$vm = Get-AzVM  -Name MyVM -ResourceGroupName ExerciseResources

Interessant ist, dass Ihre VM nun ein Objekt ist, mit dem Sie interagieren können. Sie können beispielsweise Änderungen an diesem Objekt vornehmen und diese dann mithilfe des Befehls Update-AzVM zurück an Azure pushen:

$ResourceGroupName = "ExerciseResources"
$vm = Get-AzVM  -Name MyVM -ResourceGroupName $ResourceGroupName
$vm.HardwareProfile.vmSize = "Standard_DS3_v2"

Update-AzVM -ResourceGroupName $ResourceGroupName  -VM $vm

Der interaktive Modus in PowerShell eignet sich für einmalige Aufgaben. In diesem Beispiel verwenden Sie die gleiche Ressourcengruppe für die Lebensdauer des Projekts, weshalb es sinnvoll ist, sie interaktiv zu erstellen. Der interaktive Modus erweist sich für diese Aufgabe oft als schneller und einfacher als das Schreiben eines Skripts, das Sie dann nur ein Mal ausführen.