Migrieren von AzureRM zu Azure PowerShell Az im Azure Stack Hub
Das Az-Modul weist die Featureparität mit AzureRM auf, verwendet jedoch kürzere und konsistentere Cmdlet-Namen. Skripts, die für die AzureRM-Cmdlets geschrieben wurden, funktionieren nicht automatisch mit dem neuen Modul. Um den Übergang zu vereinfachen, bietet Az Tools, mit denen Sie Ihre vorhandenen Skripts mit AzureRM ausführen können. Keine Migration zu einem neuen Befehlssatz ist jemals einfach, aber dieser Artikel hilft Ihnen beim Einstieg in das neue Modul.
Die vollständige Liste der Änderungen zwischen AzureRM und Az finden Sie im Migrationshandbuch für Az 1.0.0
Überprüfen auf installierte Versionen von AzureRM
Bevor Sie Migrationsschritte ausführen, überprüfen Sie, welche Versionen von AzureRM auf Ihrem System installiert sind. Auf diese Weise können Sie sicherstellen, dass Skripts bereits auf der neuesten Version ausgeführt werden, und Sie wissen lassen, ob Sie Befehlsaliasen aktivieren können, ohne AzureRM zu deinstallieren.
Führen Sie den Befehl aus, um zu überprüfen, welche Versionen von AzureRM Sie installiert haben:
Get-InstalledModule -Name AzureRM -AllVersions
Überprüfen Sie, ob aktuelle Skripte mit AzureRM funktionieren
Dies ist der wichtigste Schritt! Führen Sie Ihre vorhandenen Skripts aus, und stellen Sie sicher, dass sie mit der neuesten Version von AzureRM (2.5.0) arbeiten. Wenn Ihre Skripts nicht funktionieren, lesen Sie unbedingt den AzureRM-Migrationsleitfaden.
Installieren des Azure PowerShell Az-Moduls
Der erste Schritt besteht darin, das Az-Modul auf Ihrer Plattform zu installieren. Wenn Sie Az installieren, empfiehlt es sich, AzureRM zu deinstallieren. In den folgenden Schritten erfahren Sie, wie Sie ihre vorhandenen Skripts weiter ausführen und die Kompatibilität für alte Cmdlet-Namen aktivieren.
Führen Sie die folgenden Schritte aus, um das Azure PowerShell Az-Modul zu installieren:
- Empfohlene: 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. Das Aktivieren des Kompatibilitätsmodus mit azureRM-Cmdlets, die noch verfügbar sind, kann zu unvorhersehbarem Verhalten führen. Überspringen Sie diesen Schritt, wenn Sie sich entschieden haben, AzureRM installiert zu lassen, beachten Sie jedoch, dass alle AzureRM-Cmdlets die älteren Module verwenden und keine Az-Cmdlets aufrufen.
Wenn AzureRM deinstalliert wurde und Ihre Skripts mit der neuesten AzureRM-Version arbeiten, besteht der nächste Schritt darin, den Kompatibilitätsmodus für das Az-Modul zu aktivieren. Kompatibilität ist mit dem Befehl aktiviert:
Enable-AzureRmAlias -Scope CurrentUser
Aliase ermöglichen die Verwendung alter Cmdlet-Namen mit dem installierten Az-Modul. Diese Aliase werden für den ausgewählten Bereich in das Benutzerprofil geschrieben. Wenn kein Benutzerprofil vorhanden ist, wird ein Profil erstellt.
Warnung
Sie können für diesen Befehl einen anderen -Scope
verwenden, es wird jedoch 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. Das Aktivieren von Aliasen systemweit könnte auch Probleme für andere Benutzer verursachen, die AzureRM in ihrem lokalen Bereich installiert haben.
Sobald der Aliasmodus aktiviert ist, führen Sie Ihre Skripts erneut aus, um zu bestätigen, dass sie weiterhin wie erwartet funktionieren.
Ändern von Modul- und Cmdlet-Namen
Im Allgemeinen wurden die Modulnamen so geändert, dass AzureRM
und Azure
Az
werden und für Cmdlets identisch sind.
Beispielsweise wurde das modul AzureRM.Compute
in Az.Compute
umbenannt. New-AzureRMVM
wurde New-AzVM
, und Get-AzureStorageBlob
ist jetzt Get-AzStorageBlob
.
Es gibt Ausnahmen von dieser Namensänderung, die Sie beachten sollten. Einige Module wurden umbenannt oder in vorhandene Module zusammengeführt, ohne dass sich dies auf das Suffix ihrer Cmdlets auswirkt, außer das Ändern von AzureRM
oder Azure
in Az
. Andernfalls wurde das vollständige Cmdlet-Suffix 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
Durch Ausführen dieser Schritte können Sie alle vorhandenen Skripts aktualisieren, um das neue Modul zu verwenden. Wenn Sie Fragen oder Probleme mit diesen Schritten haben, die Ihre Migration erschwert haben, kommentieren Sie bitte diesen Artikel, damit wir die Anweisungen verbessern können.
Grundlegende Änderungen für Az 1.0.0
Dieses Dokument enthält detaillierte Informationen zu den Änderungen zwischen AzureRM 6.x und dem neuen Az-Modul, Version 1.x und höher. Das Inhaltsverzeichnis unterstützt Sie durch einen vollständigen Migrationspfad, einschließlich modulspezifischer Änderungen, die sich auf Ihre Skripts auswirken können.
Allgemeine grundlegende Änderungen
In diesem Abschnitt werden die allgemeinen, kompatibilitätsbrechenden Änderungen detailliert, die Teil der Neugestaltung des Az-Moduls sind.
Änderungen von Cmdlet-Nomen
Im AzureRM-Modul verwenden Cmdlets entweder AzureRM
oder Azure
als Präfix eines Substantivs. Az vereinfacht und normalisiert Cmdlet-Namen, sodass alle Cmdlets "Az" als Präfix des Cmdlets verwenden. Zum Beispiel:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Geändert in:
Get-AzVM
Get-AzKeyVaultSecret
Um den Übergang zu diesen neuen Cmdlet-Namen zu vereinfachen, führt Az zwei neue Cmdlets ein, Enable-AzureRmAlias und Disable-AzureRmAlias. Enable-AzureRmAlias
erstellt Aliase für die älteren Cmdlet-Namen in AzureRM, die den neueren Az-Cmdlet-Namen zugeordnet sind. Mithilfe des arguments -Scope
mit Enable-AzureRmAlias
können Sie auswählen, wo Aliase aktiviert sind.
Beispielsweise das folgende Skript in AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Kann mit minimalen Änderungen mit Enable-AzureRmAlias
ausgeführt werden:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Wenn Sie Enable-AzureRmAlias -Scope CurrentUser
ausführen, werden die Aliase für alle geöffneten PowerShell-Sitzungen aktiviert, sodass nach dem Ausführen dieses Cmdlets überhaupt kein Skript wie folgt geändert werden muss:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Ausführliche Informationen zur Nutzung von Alias-Cmdlets finden Sie in der Referenz Enable-AzureRmAlias.
Wenn Sie bereit sind, Aliase zu deaktivieren, entfernt Disable-AzureRmAlias
die erstellten Aliase. Ausführliche Informationen finden Sie in der Disable-AzureRmAlias Referenz.
Wichtig
Stellen Sie beim Deaktivieren von Aliasen sicher, dass sie für alle Bereiche deaktiviert sind, für die Aliase aktiviert waren.
Änderungen des Modulnamens
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 in Modulnamen bedeuten, dass alle Skripts, die #Requires
oder Import-Module
zum Laden bestimmter Module verwenden, stattdessen geändert werden müssen, um stattdessen das neue Modul zu verwenden. Für Module, bei denen das Cmdlet-Suffix nicht geändert wurde, bedeutet dies, dass das Suffix, das den Vorgangsbereich angibt, und nichtist, obwohl der Modulname geändert wurde.
Migrieren von Anweisungen vom Typ „#Requires“ und „Import-Module“
Skripts, die #Requires
oder Import-Module
verwenden, um eine Abhängigkeit von AzureRM-Modulen zu deklarieren, müssen aktualisiert werden, um die neuen Modulnamen zu verwenden. Zum Beispiel:
#Requires -Module AzureRM.Compute
Sollte geändert werden in:
#Requires -Module Az.Compute
Für Import-Module
:
Import-Module -Name AzureRM.Compute
Sollte geändert werden in:
Import-Module -Name Az.Compute
Migrieren vollqualifizierter Cmdlet-Aufrufe
Skripts, die modulqualifizierte Cmdlet-Aufrufe verwenden, z. B.:
AzureRM.Compute\Get-AzureRmVM
Muss geändert werden, damit die neuen Modul- und Cmdlet-Namen verwendet werden:
Az.Compute\Get-AzVM
Migrieren von Modulmanifestabhängigkeiten
Module, die Abhängigkeiten von AzureRM-Modulen über eine Modulmanifestdatei (.psd1) deklarieren, müssen die Modulnamen im RequiredModules
-Abschnitt aktualisieren:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Änderung erforderlich in:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Entfernte Module
Die folgenden Module wurden entfernt:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Die Tools für diese Dienste werden nicht mehr aktiv unterstützt. Kunden werden ermutigt, zu alternativen Diensten zu wechseln, sobald sie bequem ist.
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. Für die Verwendung von PowerShell Core 6.x oder höher ist .NET Framework nicht erforderlich.
Temporäres Entfernen der Benutzeranmeldung mit PSCredential
Aufgrund von Änderungen des Authentifizierungsflusses für .NET Standard entfernen wir vorübergehend die Benutzeranmeldung über PSCredential. Diese Funktion wird in der Version 1/15/2019 für PowerShell 5.1 für Windows neu eingeführt. Dies wird in diesem GitHub-Issue ausführlich erläutert.
Standardmäßige Gerätecodeanmeldung anstelle einer Webbrowseraufforderung
Aufgrund von Änderungen des Authentifizierungsflusses für .NET Standard verwenden wir die Geräteanmeldung als Standard-Anmeldefluss während der interaktiven Anmeldung. Die webbrowserbasierte Anmeldung wird für PowerShell 5.1 für Windows als Standard in der Version 1/15/2019 neu 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 (zuvor AzureRM.ApiManagement)
- Die folgenden Cmdlets wurden entfernt:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Verwenden Sie Set-AzApiManagement Cmdlet, um diese Eigenschaften stattdessen festzulegen.
- Die folgenden Eigenschaften wurden entfernt:
- Eigenschaften
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
undScmHostnameConfiguration
vom TypPsApiManagementHostnameConfiguration
wurden ausPsApiManagementContext
entfernt. Verwenden Sie stattdessenPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
undScmCustomHostnameConfiguration
vom TypPsApiManagementCustomHostNameConfiguration
. - Eigenschaft
StaticIPs
aus PsApiManagementContext entfernt. Das Eigentum wurde inPublicIPAddresses
undPrivateIPAddresses
aufgeteilt. - Die erforderliche
Location
-Eigenschaft wurde aus dem Cmdlet New-AzureApiManagementVirtualNetwork entfernt.
- Eigenschaften
Az.Billing (früher AzureRM.Billing, AzureRM.Consumption und AzureRM.UsageAggregates)
- Der parameter
InvoiceName
wurde aus dem CmdletGet-AzConsumptionUsageDetail
entfernt. Skripts müssen andere Identitätsparameter für die Rechnung verwenden.
Az.Compute (zuvor AzureRM.Compute)
IdentityIds
werden aus der EigenschaftIdentity
inPSVirtualMachine
- undPSVirtualMachineScaleSet
-Objekten entfernt. Skripte sollten den Wert dieses Feldes nicht mehr verwenden, um Verarbeitungsentscheidungen zu treffen.- Der Typ der
InstanceView
Eigenschaft desPSVirtualMachineScaleSetVM
Objekts wird vonVirtualMachineInstanceView
inVirtualMachineScaleSetVMInstanceView
geändert. - Die Eigenschaften
AutoOSUpgradePolicy
undAutomaticOSUpgrade
wurden aus derUpgradePolicy
-Eigenschaft entfernt. - Der Typ der
Sku
-Eigenschaft inPSSnapshotUpdate
Objekt wird vonDiskSku
inSnapshotSku
geändert. - Da
VmScaleSetVMParameterSet
aus demAdd-AzVMDataDisk
-Cmdlet entfernt wurde, können Sie keinen Datenträger mehr einzeln zu einer ScaleSet VM hinzufügen.
Az.KeyVault (zuvor AzureRM.KeyVault)
- Die
PurgeDisabled
-Eigenschaft wurde aus demPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
entfernt, undPSKeyVaultSecretAttributes
Objekte Skripts sollten nicht mehr auf diePurgeDisabled
-Eigenschaft verweisen, um Verarbeitungsentscheidungen zu treffen.
Az.Monitor (zuvor 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 (zuvor AzureRM.Network)
- Veralteter
ResourceId
-Parameter aus dem CmdletGet-AzServiceEndpointPolicyDefinition
entfernt - Veraltete
EnableVmProtection
-Eigenschaft ausPSVirtualNetwork
-Objekt entfernt - Das veraltete Cmdlet
Set-AzVirtualNetworkGatewayVpnClientConfig
wurde entfernt.
Skripts sollten keine Verarbeitungsentscheidungen mehr basierend auf den Werten für diese Felder treffen.
Az.Resources (zuvor AzureRM.Resources)
Parameter
Sku
aus dem CmdletNew/Set-AzPolicyAssignment
entferntDer 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
Sollte geändert werden, um das Kennwort aus der Ausgabe abzurufen:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (zuvor Azure.Storage und AzureRM.Storage)
- Um das Erstellen eines OAuth-Speicherkontexts mit nur dem Namen des Speicherkontos zu unterstützen, wurde der Standardparametersatz in
OAuthParameterSet
geändert.- Beispiel:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Beispiel:
- Der parameter
Location
ist im CmdletGet-AzStorageUsage
erforderlich geworden. - Die Speicher-API-Methoden verwenden jetzt das aufgabenbasierte asynchrone Muster (TAP) anstelle synchroner API-Aufrufe. 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 (zuvor AzureRM.Websites)
- Veraltete Eigenschaften aus den Objekten
PSAppServicePlan
,PSCertificate
,PSCloningInfo
undPSSite
entfernt
Nächste Schritte
- Weitere Informationen zu PowerShell auf Azure Stack Hub finden Sie unter Erste Schritte mit PowerShell in Azure Stack Hub
- Installieren Sie das PowerShell Az-Modul, siehe PowerShell Az-Modul für Azure Stack Hub installieren