Migrieren von AzureRM zu Azure PowerShell Az in Azure Stack Hub
Das Az-Modul bietet die gleichen Features wie AzureRM, verwendet aber kürzere und konsistentere Cmdlet-Namen. Für die AzureRM-Cmdlets geschriebene Skripts funktionieren nicht automatisch auch mit dem neuen Modul. Zur Vereinfachung des Übergangs bietet Az Tools, die es Ihnen ermöglichen, Ihre bereits vorhandenen Skripts mit AzureRM auszuführen. Eine Migration zu einem neuen Befehlssatz ist immer unangenehm. Dieser Artikel hilft Ihnen jedoch dabei, den Umstieg auf das neue Modul in die Wege zu leiten.
Die vollständige Liste mit grundlegenden Änderungen zwischen AzureRM und Az finden Sie im Migrationsleitfaden für Az 1.0.0.
Durchführen einer Überprüfung auf installierte Versionen von AzureRM
Überprüfen Sie, welche Versionen von AzureRM auf Ihrem System installiert sind, bevor Sie Migrationsschritte ausführen. So können Sie sicherstellen, dass für Skripts bereits das aktuelle Release verwendet wird, und Sie können ermitteln, ob Sie Befehlsaliase ohne Deinstallation von AzureRM aktivieren können.
Führen Sie den folgenden Befehl aus, um zu überprüfen, welche Versionen von AzureRM bei Ihnen installiert sind:
Get-InstalledModule -Name AzureRM -AllVersions
Vergewissern, dass die aktuellen Skripts mit AzureRM funktionieren
Das ist der wichtigste Schritt überhaupt. Führen Sie Ihre vorhandenen Skripts aus, und vergewissern Sie sich, dass diese mit der aktuellen Version von AzureRM (2.5.0) funktionieren. Sollten Ihre Skripts nicht funktionieren, lesen Sie das AzureRM-Migrationshandbuch.
Installieren des Az-Moduls von Azure PowerShell
Der erste Schritt besteht darin, das Az-Modul auf Ihrer Plattform zu installieren. Wenn Sie Az installieren, ist es ratsam, AzureRM zu deinstallieren. In den folgenden Schritten erfahren Sie, wie Sie Ihre bereits vorhandenen Skripts weiterhin ausführen und die Kompatibilität mit älteren Cmdlet-Namen sicherstellen können.
Gehen Sie zum Installieren des Az-Moduls von Azure PowerShell wie folgt vor:
- Empfohlen:Deinstallieren Sie das AzureRM-Modul. Achten Sie darauf, alle installierten Versionen von AzureRM zu entfernen, nicht nur die neueste Version.
- Installieren des Az-Moduls
Aktivieren von AzureRM-Kompatibilitätsaliasen
Wichtig
Aktivieren Sie den Kompatibilitätsmodus nur, wenn Sie alle Versionen von AzureRM deinstalliert haben. Wenn Sie den Kompatibilitätsmodus bei noch vorhandenen AzureRM-Cmdlets aktivieren, kann dies zu unvorhersehbarem Verhalten führen. Überspringen Sie diesen Schritt, wenn Sie sich für die Beibehaltung der AzureRM-Installation entschieden haben. Sie müssen sich dann aber darüber im Klaren sein, dass für alle AzureRM-Cmdlets die älteren Module verwendet und keine Az-Cmdlets aufgerufen werden.
Wenn Sie AzureRM deinstalliert haben und Ihre Skripts mit der neuesten Version von AzureRM funktionieren, ist der nächste Schritt das Aktivieren des Kompatibilitätsmodus für das Az-Modul. Die Kompatibilität wird mithilfe des folgenden Befehls aktiviert:
Enable-AzureRmAlias -Scope CurrentUser
Aliase ermöglichen die Verwendung alter Cmdlet-Namen bei installiertem Az-Modul. Diese Aliase werden in das Benutzerprofil für den ausgewählten Bereich geschrieben. Sollte kein Benutzerprofil vorhanden sein, wird eines erstellt.
Warnung
Sie können für diesen Befehl zwar einen anderen Bereich (-Scope
) verwenden, aber dies wird nicht empfohlen. Da Aliase in das Benutzerprofil für den ausgewählten Bereich geschrieben werden, empfiehlt es sich, sie auf einen möglichst kleinen Bereich zu beschränken. Eine systemweite Aktivierung von Aliasen kann auch zu Problemen für andere Benutzer führen, die AzureRM in ihrem lokalen Bereich installiert haben.
Führen Sie Ihre Skripts nach der Aktivierung des Aliasmodus erneut aus, um sich zu vergewissern, dass sie weiterhin wie erwartet funktionieren.
Ändern von Modul- und Cmdlet-Namen
Ganz allgemein haben sich die Modulnamen geändert, sodass AzureRM
und Azure
zu Az
werden. Gleiches gilt für die Cmdlets.
So wurde beispielsweise das Modul AzureRM.Compute
in Az.Compute
umbenannt.
New-AzureRMVM
wurde zu New-AzVM
, und Get-AzureStorageBlob
ist jetzt Get-AzStorageBlob
.
Es gibt allerdings Ausnahmen für diese Namensänderung, die Sie kennen sollten. Einige Module wurden umbenannt oder mit vorhandenen Modulen zusammengeführt, ohne dass sich dies auf das Suffix der zugehörigen Cmdlets ausgewirkt hat (bis auf die Änderung von AzureRM
oder Azure
in Az
). Andernfalls wurde das vollständige Suffix des Cmdlets geändert, um den neuen Modulnamen widerzuspiegeln.
AzureRM-Modul | Az-Modul | Cmdlet-Suffix geändert? |
---|---|---|
AzureRM.Profile | Az.Accounts | Ja |
AzureRM.Insights | Az.Monitor | Ja |
AzureRM.Tags | Az.Resources | Nein |
AzureRM.UsageAggregates | Az.Billing | Nein |
AzureRM.Consumption | Az.Billing | Nein |
Zusammenfassung
Mithilfe dieser Schritte können Sie alle Ihre bereits vorhandenen Skripts für die Verwendung des neuen Moduls aktualisieren. Falls Sie Fragen haben oder bei Ihrer Migration Probleme aufgetreten sind, kommentieren Sie diesen Artikel, damit wir die Anweisungen verbessern können.
Grundlegende Änderungen für Az 1.0.0
Dieses Dokument enthält ausführliche Informationen zu den Änderungen zwischen AzureRM 6.x und dem neuen Az-Modul, Version 1.x und höher. Das Inhaltsverzeichnis führt Sie durch einen vollständigen Migrationspfad, einschließlich modulspezifischer Änderungen, die sich auf Ihre Skripte auswirken können.
Allgemeine grundlegende Änderungen
In diesem Abschnitt werden die allgemeinen grundlegenden Änderungen beschrieben, die Teil des neuen Entwurfs des Az-Moduls sind.
Präfixänderungen für Cmdlet-Nomen
Im AzureRM-Modul verwenden Cmdlets entweder AzureRM
oder Azure
als Nomenpräfix. Az vereinfacht und normalisiert Cmdlet-Namen, sodass alle Cmdlets „Az“ als Nomenpräfix verwenden. Beispiel:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Geändert in:
Get-AzVM
Get-AzKeyVaultSecret
Um die Umstellung auf diese neuen Cmdlet-Namen zu vereinfachen, werden mit Az die beiden neuen Cmdlets Enable-AzureRmAlias und Disable-AzureRmAlias eingeführt.
Enable-AzureRmAlias
erstellt Aliase für die älteren Cmdlet-Namen in AzureRM, die den neueren Az-Cmdlet-Namen zugeordnet sind. Indem Sie das Argument -Scope
mit Enable-AzureRmAlias
verwenden, können Sie auswählen, wo Aliase aktiviert werden.
Ein Beispiel hierfür ist das folgende Skript in AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Es kann mit Enable-AzureRmAlias
mit minimalen Änderungen ausgeführt werden:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Durch das Ausführen von Enable-AzureRmAlias -Scope CurrentUser
werden die Aliase für alle von Ihnen geöffneten PowerShell-Sitzungen aktiviert. Nach der Ausführung dieses Cmdlets sind für ein Skript dieser Art keinerlei Änderungen erforderlich:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Ausführliche Informationen zur Nutzung der Alias-Cmdlets finden Sie in der Enable-AzureRmAlias-Referenz.
Wenn Sie bereit sind, Aliase zu deaktivieren, entfernt Disable-AzureRmAlias
die erstellten Aliase. Ausführliche Informationen finden Sie in der Disable-AzureRmAlias-Referenz.
Wichtig
Wenn Sie Aliase deaktivieren, stellen Sie sicher, dass sie für alle Bereiche deaktiviert sind, in denen Aliase aktiviert waren.
Änderungen von Modulnamen
Die Modulnamen wurden von AzureRM.*
in Az.*
geändert, mit Ausnahme der folgenden Module:
AzureRM-Modul | Az-Modul |
---|---|
Azure.Storage | Az.Storage |
Azure.AnalysisServices | Az.AnalysisServices |
AzureRM.Profile | Az.Accounts |
AzureRM.Insights | Az.Monitor |
AzureRM.RecoveryServices.Backup | Az.RecoveryServices |
AzureRM.RecoveryServices.SiteRecovery | Az.RecoveryServices |
AzureRM.Tags | Az.Resources |
AzureRM.MachineLearningCompute | Az.MachineLearning |
AzureRM.UsageAggregates | Az.Billing |
AzureRM.Consumption | Az.Billing |
Die Änderungen der Modulnamen bedeuten, dass alle Skripts, die #Requires
oder Import-Module
zum Laden von bestimmten Modulen nutzen, auf die Verwendung des neuen Moduls umgestellt werden müssen. Für Module, bei denen sich das Cmdlet-Suffix nicht geändert hat, bedeutet dies, dass sich das Suffix, das den Operationsbereich angibt, nicht geändert hat, obwohl der Modulname geändert wurde.
Migrieren von Anweisungen vom Typ „#Requires“ und „Import-Module“
Skripts, für die #Requires
oder Import-Module
zum Deklarieren einer Abhängigkeit von AzureRM-Modulen verwendet wird, müssen aktualisiert werden, damit die neuen Modulnamen genutzt werden. Beispiel:
#Requires -Module AzureRM.Compute
Änderung erforderlich in:
#Requires -Module Az.Compute
Für Import-Module
:
Import-Module -Name AzureRM.Compute
Änderung erforderlich in:
Import-Module -Name Az.Compute
Migrieren von vollqualifizierten Cmdlet-Aufrufen
Bei Verwendung von Skripts, für die Cmdlet-Aufrufe mit Modulqualifikation verwendet werden, z. B.:
AzureRM.Compute\Get-AzureRmVM
Diese müssen geändert werden, damit die neuen Modul- und Cmdlet-Namen verwendet werden:
Az.Compute\Get-AzVM
Migrieren von Modulmanifestabhängigkeiten
Für Module, die Abhängigkeiten von AzureRM-Modulen anhand einer Modulmanifestdatei (.psd1) ausdrücken, müssen die Modulnamen jeweils im Abschnitt RequiredModules
aktualisiert werden:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Änderung erforderlich in:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Entfernte Module
Folgende Module wurden entfernt:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Die Tools für diese Dienste werden nicht mehr aktiv unterstützt. Kunden wird die zeitnahe Umstellung auf alternative Dienste empfohlen.
Windows PowerShell 5.1 und .NET 4.7.2
Für die Verwendung von Az mit PowerShell 5.1 für Windows ist die Installation von .NET Framework 4.7.2 erforderlich. Die Verwendung von PowerShell Core 6.x oder höher erfordert kein .NET Framework.
Vorübergehende Entfernung der Benutzeranmeldung per PSCredential
Aufgrund von Änderungen am Authentifizierungsablauf für .NET Standard entfernen wir die Benutzeranmeldung per PSCredential vorübergehend. Diese Funktion wird mit dem PowerShell 5.1-Release für Windows vom 15.01.2019 wieder eingeführt. Eine ausführliche Beschreibung finden Sie unter diesem GitHub-Problem.
Anmeldung per Standardgerätecode anstelle einer Webbrowser-Eingabeaufforderung
Aufgrund von Änderungen am Authentifizierungsablauf für .NET Standard nutzen wir die Geräteanmeldung während der interaktiven Anmeldung als Standardanmeldungsablauf. Die Anmeldung per Webbrowser wird im PowerShell 5.1-Release für Windows vom 15.01.2019 wieder als Standard eingeführt. Benutzer können dann die Geräteanmeldung mit einem Switch-Parameter wählen.
Grundlegende Änderungen am Modul
In diesem Abschnitt werden bestimmte wichtige Änderungen für einzelne Module und Cmdlets beschrieben.
Az.ApiManagement (bisher AzureRM.ApiManagement)
- Folgende Cmdlets wurden entfernt:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Verwenden Sie stattdessen das Cmdlet Set-AzApiManagement, um diese Eigenschaften festzulegen.
- Die folgenden Eigenschaften wurden entfernt:
- Die Eigenschaften
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
undScmHostnameConfiguration
vom TypPsApiManagementHostnameConfiguration
wurden ausPsApiManagementContext
entfernt. Verwenden Sie stattdessenPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
undScmCustomHostnameConfiguration
vom TypPsApiManagementCustomHostNameConfiguration
. - Die
StaticIPs
-Eigenschaft wurde aus PsApiManagementContext entfernt. Die Eigenschaft wurde inPublicIPAddresses
undPrivateIPAddresses
unterteilt. - Die erforderliche
Location
-Eigenschaft wurde aus dem Cmdlet New-AzureApiManagementVirtualNetwork entfernt.
- Die Eigenschaften
Az.Billing (bisher AzureRM.Billing, AzureRM.Consumption und AzureRM.UsageAggregates)
- Der Parameter
InvoiceName
wurde aus dem CmdletGet-AzConsumptionUsageDetail
entfernt. Für Skripts müssen andere Identitätsparameter für die Rechnung genutzt werden.
Az.Compute (bisher AzureRM.Compute)
-
IdentityIds
wurden aus derIdentity
-Eigenschaft in den ObjektenPSVirtualMachine
undPSVirtualMachineScaleSet
entfernt. In Skripts sollte der Wert dieses Felds nicht mehr verwendet werden, um Verarbeitungsentscheidungen zu treffen. - Der Typ der
InstanceView
-Eigenschaft desPSVirtualMachineScaleSetVM
-Objekts wurde vonVirtualMachineInstanceView
inVirtualMachineScaleSetVMInstanceView
geändert. - Die Eigenschaften
AutoOSUpgradePolicy
undAutomaticOSUpgrade
wurden aus derUpgradePolicy
-Eigenschaft entfernt. - Der Typ der
Sku
-Eigenschaft imPSSnapshotUpdate
-Objekt wurde vonDiskSku
inSnapshotSku
geändert. -
VmScaleSetVMParameterSet
wurde aus dem CmdletAdd-AzVMDataDisk
entfernt. Sie können einer ScaleSet-VM nicht mehr einzeln einen Datenträger hinzufügen.
Az.KeyVault (bisher AzureRM.KeyVault)
- Die
PurgeDisabled
-Eigenschaft wurde aus den ObjektenPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
undPSKeyVaultSecretAttributes
entfernt. In Skripts sollte nicht mehr auf diePurgeDisabled
-Eigenschaft verwiesen werden, um Verarbeitungsentscheidungen zu treffen.
Az.Monitor (bisher AzureRM.Insights)
Die Plural-Parameternamen
Categories
undTimegrains
wurden in Singular-Parameternamen aus dem CmdletSet-AzDiagnosticSetting
geändert. Skripts mit Verwendung von:Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Änderung erforderlich in:
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (bisher AzureRM.Network)
- Der veraltete Parameter
ResourceId
wurde aus dem CmdletGet-AzServiceEndpointPolicyDefinition
entfernt. - Die verwaltete
EnableVmProtection
-Eigenschaft wurde aus demPSVirtualNetwork
-Objekt entfernt. - Das veraltete Cmdlet
Set-AzVirtualNetworkGatewayVpnClientConfig
wurde entfernt.
Für Skripts sollten basierend auf den Werten dieser Felder keine Verarbeitungsentscheidungen mehr getroffen werden.
Az.Resources (bisher AzureRM.Resources)
Der Parameter
Sku
wurde aus dem CmdletNew/Set-AzPolicyAssignment
entfernt.Der Parameter
Password
wurde aus den CmdletsNew-AzADServicePrincipal
undNew-AzADSpCredential
entfernt. Die Kennwörter werden automatisch generiert. Bei Verwendung von Skripts mit Bereitstellung des Kennworts:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Änderung erforderlich, damit das Kennwort aus der Ausgabe verwendet wird:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (bisher Azure.Storage und AzureRM.Storage)
- Der Standardparametersatz wurde in
OAuthParameterSet
geändert, um die Erstellung eines OAuth-Speicherkontexts nur mit dem Speicherkontonamen zu unterstützen.- Beispiel:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Beispiel:
- Der Parameter
Location
ist im CmdletGet-AzStorageUsage
jetzt obligatorisch. - Für die Methoden der Storage-API wird jetzt anstelle von synchronen API-Aufrufen das aufgabenbasierte asynchrone Muster (Task-based Asynchronous Pattern, TAP) verwendet. Die folgenden Beispiele veranschaulichen die neuen asynchronen Befehle:
Momentaufnahme eines Blobs
AzureRM:
$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$b.ICloudBlob.Snapshot()
Az:
$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$task = $b.ICloudBlob.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result
Momentaufnahme freigeben
AzureRM:
$Share = Get-AzureStorageShare -Name $containerName -Context $ctx
$snapshot = $Share.Snapshot()
Az:
$Share = Get-AzStorageShare -Name $containerName -Context $ctx
$task = $Share.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result
Vorläufig gelöschten Blob wiederherstellen
AzureRM:
$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$b.ICloudBlob.Undelete()
Az:
$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$task = $b.ICloudBlob.UndeleteAsync()
$task.Wait()
Festlegen des Blobtarifs
AzureRM:
$blockBlob = Get-AzureStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$blockBlob.ICloudBlob.SetStandardBlobTier("hot")
$pageBlob = Get-AzureStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$pageBlob.ICloudBlob.SetPremiumBlobTier("P4")
Az:
$blockBlob = Get-AzStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$task = $blockBlob.ICloudBlob.SetStandardBlobTierAsync("hot")
$task.Wait()
$pageBlob = Get-AzStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$task = $pageBlob.ICloudBlob.SetPremiumBlobTierAsync("P4")
$task.Wait()
Az.Websites (bisher AzureRM.Websites)
- Die veralteten Eigenschaften wurden aus den Objekten
PSAppServicePlan
,PSCertificate
,PSCloningInfo
undPSSite
entfernt.
Nächste Schritte
- Weitere Informationen zu PowerShell in Azure Stack Hub finden Sie unter Erste Schritte mit PowerShell in Azure Stack Hub.
- Informationen zum Installieren des PowerShell Az-Moduls finden Sie unter Installieren des PowerShell Az-Moduls für Azure Stack Hub.