Freigeben über


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:

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 AzureAzwerden und für Cmdlets identisch sind. Beispielsweise wurde das modul AzureRM.Compute in Az.Computeumbenannt. 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-AzureRmAliasausgefü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 und ScmHostnameConfiguration vom Typ PsApiManagementHostnameConfiguration wurden aus PsApiManagementContextentfernt. Verwenden Sie stattdessen PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration und ScmCustomHostnameConfiguration vom Typ PsApiManagementCustomHostNameConfiguration.
    • Eigenschaft StaticIPs aus PsApiManagementContext entfernt. Das Eigentum wurde in PublicIPAddresses und PrivateIPAddressesaufgeteilt.
    • Die erforderliche Location-Eigenschaft wurde aus dem Cmdlet New-AzureApiManagementVirtualNetwork entfernt.

Az.Billing (früher AzureRM.Billing, AzureRM.Consumption und AzureRM.UsageAggregates)

  • Der parameter InvoiceName wurde aus dem Cmdlet Get-AzConsumptionUsageDetail entfernt. Skripts müssen andere Identitätsparameter für die Rechnung verwenden.

Az.Compute (zuvor AzureRM.Compute)

  • IdentityIds werden aus der Eigenschaft Identity in PSVirtualMachine- und PSVirtualMachineScaleSet-Objekten entfernt. Skripte sollten den Wert dieses Feldes nicht mehr verwenden, um Verarbeitungsentscheidungen zu treffen.
  • Der Typ der InstanceView Eigenschaft des PSVirtualMachineScaleSetVM Objekts wird von VirtualMachineInstanceView in VirtualMachineScaleSetVMInstanceView geändert.
  • Die Eigenschaften AutoOSUpgradePolicy und AutomaticOSUpgrade wurden aus der UpgradePolicy-Eigenschaft entfernt.
  • Der Typ der Sku-Eigenschaft in PSSnapshotUpdate Objekt wird von DiskSku in SnapshotSku geändert.
  • Da VmScaleSetVMParameterSet aus dem Add-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 dem PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItementfernt, und PSKeyVaultSecretAttributes Objekte Skripts sollten nicht mehr auf die PurgeDisabled-Eigenschaft verweisen, um Verarbeitungsentscheidungen zu treffen.

Az.Monitor (zuvor AzureRM.Insights)

  • Die Plural-Parameternamen Categories und Timegrains wurden in Singular-Parameternamen aus dem Cmdlet Set-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 Cmdlet Get-AzServiceEndpointPolicyDefinition entfernt
  • Veraltete EnableVmProtection-Eigenschaft aus PSVirtualNetwork-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 Cmdlet New/Set-AzPolicyAssignment entfernt

  • Der Parameter Password wurde aus den Cmdlets New-AzADServicePrincipal und New-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
  • Der parameter Location ist im Cmdlet Get-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, PSCloningInfound PSSite entfernt

Nächste Schritte