Erstellen einer Azure-Ressource mithilfe von Skripts in Azure PowerShell
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:
Öffnen Sie das Menü Start, und geben Sie PowerShell ein.
Wählen Sie das PowerShell-Symbol aus.
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:
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
Geben Sie Y oder A ein, und drücken Sie dann die EINGABETASTE.
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.
Führen Sie in einem Terminal den folgenden Befehl aus, um PowerShell zu starten.
pwsh
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
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:
Importieren Sie die Azure-Cmdlets.
Stellen Sie eine Verbindung mit Ihrem Azure-Abonnement her.
Erstellen Sie die Ressourcengruppe.
Überprüfen Sie, ob sie erfolgreich erstellt wurde.
Die folgende Abbildung zeigt eine Übersicht dieser Schritte:
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.
Rufen Sie mit dem Befehl
Get-AzSubscription
eine Liste mit allen Abonnementnamen Ihres Kontos ab.Ä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.