Sdílet prostřednictvím


Migrace z AzureRM na Az Azure PowerShellu ve službě Azure Stack Hub

Modul Az má paritu funkcí s AzureRM, ale používá kratší a konzistentnější názvy rutin. Skripty napsané pro rutiny AzureRM nebudou s novým modulem automaticky fungovat. Pro usnadnění přechodu nabízí Az nástroje, které vám umožní spouštět existující skripty pomocí AzureRM. Migrace na novou sadu příkazů není nikdy pohodlná, ale tento článek vám pomůže začít s přechodem na nový modul.

Úplný seznam zásadních změn mezi AzureRM a Az najdete v průvodci migrací pro Az 1.0.0

Kontrola nainstalovaných verzí AzureRM

Před provedením jakýchkoli kroků migrace zkontrolujte, které verze AzureRM jsou ve vašem systému nainstalované. Díky tomu se můžete ujistit, že skripty už běží v nejnovější verzi, a dejte vědět, jestli můžete povolit aliasy příkazů bez odinstalace AzureRM.

Pokud chcete zkontrolovat, které verze AzureRM máte nainstalované, spusťte příkaz:

Get-InstalledModule -Name AzureRM -AllVersions

Zkontrolujte, zda aktuální skripty fungují s AzureRM

Toto je nejdůležitější krok! Spusťte existující skripty a ujistěte se, že fungují s nejnovější verzí AzureRM (2.5.0). Pokud skripty nefungují, nezapomeňte si přečíst průvodce migrací AzureRM.

Instalace modulu Az Azure PowerShellu

Prvním krokem je instalace modulu Az na platformu. Při instalaci Az se doporučuje odinstalovat AzureRM. V následujících krocích se naučíte, jak dál používat své stávající skripty a povolit kompatibilitu pro staré názvy cmdletů.

Pokud chcete nainstalovat modul Az Azure PowerShellu, postupujte takto:

Povolení aliasů kompatibility AzureRM

Důležitý

Režim kompatibility povolte jenom v případě, že jste odinstalovali všechny verze AzureRM. Povolení režimu kompatibility, zatímco jsou rutiny AzureRM stále dostupné, může způsobit nepředvídatelné chování. Pokud jste se rozhodli zachovat nainstalovaný AzureRM, přeskočte tento krok, ale mějte na paměti, že všechny rutiny AzureRM budou používat starší moduly a nebudou volat žádné rutiny Az.

Když je Služba AzureRM odinstalovaná a vaše skripty pracují s nejnovější verzí AzureRM, dalším krokem je povolení režimu kompatibility modulu Az. Je povolená kompatibilita s příkazem:

Enable-AzureRmAlias -Scope CurrentUser

Aliasy umožňují používat staré názvy rutin s nainstalovaným modulem Az. Tyto aliasy se zapisují do profilu uživatele pro vybraný obor. Pokud žádný profil uživatele neexistuje, vytvoří se.

Varování

Pro tento příkaz můžete použít jiný -Scope, ale nedoporučuje se. Aliasy se zapisují do profilu uživatele pro vybraný rozsah, takže je omezte na co nejmenší rozsah. Povolení aliasů v celém systému může také způsobit problémy pro ostatní uživatele, kteří mají v místním oboru nainstalovaný AzureRM.

Jakmile je režim aliasu povolený, spusťte skripty znovu a ověřte, že stále fungují podle očekávání.

Změna názvů modulů a cmdletů

Obecně se názvy modulů změnily tak, aby se AzureRM a Azure staly Az, a totéž platí pro cmdlety. Například modul AzureRM.Compute byl přejmenován na Az.Compute. New-AzureRMVM se stala New-AzVMa Get-AzureStorageBlob je nyní Get-AzStorageBlob.

U této změny pojmenování existují výjimky, o které byste měli vědět. Některé moduly byly přejmenovány nebo sloučeny do stávajících modulů, aniž by to ovlivnilo příponu jejich rutin, kromě změny AzureRM nebo Azure na Az. V opačném případě se úplná přípona příkazu cmdlet změnila tak, aby odrážela název nového modulu.

Modul AzureRM Modul Az Přípona apletu se změnila?
AzureRM.Profile Az.Accounts Ano
AzureRM.Insights Az.Monitor Ano
AzureRM.Tags Az.Resources Ne
AzureRM.UsageAggregates Az.Billing Ne
AzureRM.Consumption Az.Billing Ne

Shrnutí

Pomocí těchto kroků můžete aktualizovat všechny existující skripty tak, aby používaly nový modul. Pokud máte nějaké dotazy nebo problémy s těmito kroky, které ztěžovaly migraci, okomentujte prosím tento článek, abychom mohli tyto pokyny vylepšit.

Zásadní změny pro Az 1.0.0

Tento dokument obsahuje podrobné informace o změnách mezi AzureRM 6.x a novým modulem Az verze 1.x a novějším. Obsah vám pomůže provést úplnou cestu migrace, včetně změn specifických pro modul, které můžou ovlivnit vaše skripty.

Obecné zásadní změny

Tato část podrobně popisuje obecné zásadní změny, které jsou součástí návrhu modulu Az.

Změny předpony cmdletů

V modulu AzureRM cmdlety použily jako předponu podstatných jmen buď AzureRM, nebo Azure. Az zjednodušuje a normalizuje názvy rutin tím, že všechny rutiny používají 'Az' jako předponu názvů rutin. Například:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Změnil se na:

Get-AzVM
Get-AzKeyVaultSecret

Aby byl přechod na tyto nové názvy rutin jednodušší, Az zavádí dvě nové rutiny, Enable-AzureRmAlias a Disable-AzureRmAlias. Enable-AzureRmAlias vytvoří aliasy pro starší názvy cmdletů v AzureRM, které se mapují na novější názvy cmdletů Az. Pomocí argumentu -Scope s Enable-AzureRmAlias můžete zvolit, kde jsou povolené aliasy.

Například následující skript v AzureRM:

#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Lze spustit s minimálními změnami pomocí Enable-AzureRmAlias:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Spuštěním Enable-AzureRmAlias -Scope CurrentUser povolíte aliasy pro všechny relace PowerShellu, které otevřete, takže po spuštění tohoto cmdletu nebude potřeba měnit skript, jako je tento, vůbec.

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Úplné podrobnosti o použití aliasových rutin najdete v referenčním Enable-AzureRmAlias.

Až budete připraveni zakázat aliasy, Disable-AzureRmAlias odebere vytvořené aliasy. Úplné podrobnosti najdete v referenční Disable-AzureRmAlias.

Důležitý

Při zakazování aliasů se ujistěte, že jsou zakázané pro všechny obory, u kterých byly povolené aliasy.

Změny názvu modulu

Názvy modulů se změnily z AzureRM.* na Az.*s výjimkou následujících modulů:

Modul AzureRM Modul Az
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

Změny názvů modulů znamenají, že každý skript, který k načtení konkrétních modulů používá #Requires nebo Import-Module, bude potřeba změnit, aby místo toho používal nový modul. U modulů, u kterých se přípona rutiny nezměnila, to znamená, že i když se změnil název modulu, přípona, která označuje operační prostor, je a nikoli.

Migrace vyžaduje importní příkazy modulu

Skripty, které používají #Requires nebo Import-Module k deklaraci závislosti na modulech AzureRM, musí být aktualizovány tak, aby používaly názvy nových modulů. Například:

#Requires -Module AzureRM.Compute

Mělo by se změnit na:

#Requires -Module Az.Compute

Pro Import-Module:

Import-Module -Name AzureRM.Compute

Mělo by se změnit na:

Import-Module -Name Az.Compute

Migrace plně kvalifikovaných vyvolání cmdletů

Skripty, které používají vyvolání rutin s kvalifikovanými moduly, například:

AzureRM.Compute\Get-AzureRmVM

Je nutné změnit, aby se používaly nové názvy modulů a rutin:

Az.Compute\Get-AzVM

Migrace závislostí manifestu modulu

Moduly, které vyjadřují závislosti na modulech AzureRM prostřednictvím souboru manifestu modulu (.psd1), budou muset aktualizovat názvy modulů v jejich RequiredModules části:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Je nutné změnit na:

RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})

Odebrané moduly

Byly odebrány následující moduly:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Nástroje pro tyto služby se už aktivně nepodporují. Zákazníkům se doporučuje přejít na alternativní služby, jakmile bude výhodné.

Windows PowerShell 5.1 a .NET 4.7.2

Použití Az s PowerShellem 5.1 pro Windows vyžaduje instalaci rozhraní .NET Framework 4.7.2. Použití PowerShellu Core 6.x nebo novějšího nevyžaduje rozhraní .NET Framework.

Dočasné odebrání přihlášení uživatele pomocí PSCredential

Vzhledem ke změnám v toku ověřování pro .NET Standard dočasně odebíráme přihlášení uživatele přes PSCredential. Tato funkce se znovu zavede ve verzi 15. 15. 2019 pro PowerShell 5.1 pro Windows. Toto téma je podrobně popsáno v tomto problému na GitHubu.

Výchozí přihlášení pomocí kódu zařízení namísto výzvy v webovém prohlížeči

Vzhledem ke změnám v toku ověřování pro .NET Standard používáme při interaktivním přihlášení jako výchozí tok přihlášení zařízení. Pro PowerShell 5.1 pro Windows se znovu zavede přihlášení na základě webového prohlížeče jako výchozí ve verzi z 15. 15. 2019. V té době budou uživatelé moct zvolit přihlášení zařízení pomocí parametru Switch.

Zásadní změny modulu

Tato část podrobně popisuje konkrétní zlomové změny pro jednotlivé moduly a příkazy.

Az.ApiManagement (dříve AzureRM.ApiManagement)

  • Odebrali jsme následující rutiny:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • K nastavení těchto vlastností použijte rutinu Set-AzApiManagement.
  • Odebrali jsme následující vlastnosti:
    • Odstraněna vlastnost PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration a ScmHostnameConfiguration typu PsApiManagementHostnameConfiguration z PsApiManagementContext. Místo toho použijte PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration a ScmCustomHostnameConfiguration typu PsApiManagementCustomHostNameConfiguration.
    • Odebraná vlastnost StaticIPs z PsApiManagementContext. Nemovitost byla rozdělena do PublicIPAddresses a PrivateIPAddresses.
    • Byla odebrána požadovaná vlastnost Location z cmdletu New-AzureApiManagementVirtualNetwork.

Az.Billing (dříve AzureRM.Billing, AzureRM.Consumption a AzureRM.UsageAggregates)

  • Parametr InvoiceName byl z cmdletu Get-AzConsumptionUsageDetail odebrán. Skripty budou muset pro fakturu použít jiné parametry identity.

Az.Compute (dříve AzureRM.Compute)

  • IdentityIds jsou odebrány z vlastnosti Identity v objektech PSVirtualMachine a PSVirtualMachineScaleSet. Skripty by již neměly používat hodnotu tohoto pole k zpracovávání rozhodnutí.
  • Typ vlastnosti InstanceView objektu PSVirtualMachineScaleSetVM se změní z VirtualMachineInstanceView na VirtualMachineScaleSetVMInstanceView
  • Vlastnosti AutoOSUpgradePolicy a AutomaticOSUpgrade jsou odebrány z vlastnosti UpgradePolicy.
  • Typ vlastnosti Sku v objektu PSSnapshotUpdate se změní z DiskSku na SnapshotSku
  • VmScaleSetVMParameterSet se odebere z rutiny Add-AzVMDataDisk, už nemůžete do virtuálního počítače ScaleSet přidávat datový disk jednotlivě.

Az.KeyVault (dříve AzureRM.KeyVault)

  • Vlastnost PurgeDisabled byla odebrána z objektů PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItema PSKeyVaultSecretAttributes. Skripty by již neměly odkazovat na vlastnost PurgeDisabled k rozhodování při zpracování.

Az.Monitor (dříve AzureRM.Insights)

  • Odstraněné názvy parametrů v množném čísle Categories a Timegrains ve prospěch názvů parametrů v jednotném čísle z rutin Set-AzDiagnosticSetting skriptů pomocí

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Mělo by se změnit na

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (dříve AzureRM.Network)

  • Odebrání zastaralého parametru ResourceId z rutiny Get-AzServiceEndpointPolicyDefinition
  • Odstraněna zastaralá vlastnost EnableVmProtection z objektu PSVirtualNetwork
  • Odebraná zastaralá cmdlet Set-AzVirtualNetworkGatewayVpnClientConfig

Skripty by už neměly přijímat rozhodnutí o zpracování na základě hodnot uvedených v těchto polích.

Az.Resources (dříve AzureRM.Resources)

  • Odebrání parametru Sku z rutiny New/Set-AzPolicyAssignment

  • Odstraněn parametr Password z cmdletů New-AzADServicePrincipal a New-AzADSpCredential. Hesla jsou automaticky generována, skripty, které zadávaly heslo:

    New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
    

    Mělo by se změnit, aby se heslo načítalo z výstupu:

    $credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    $secPassword = $credential.Secret
    

Az.Storage (dříve Azure.Storage a AzureRM.Storage)

  • Aby bylo možné podporovat vytváření kontextu úložiště Oauth pouze s názvem účtu úložiště, výchozí sada parametrů se změnila na OAuthParameterSet
    • Příklad: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Parametr Location se stal povinným v cmdletu Get-AzStorageUsage.
  • Metody rozhraní API úložiště teď místo synchronních volání rozhraní API používají asynchronní vzor založený na úlohách (TAP). Následující příklady ukazují nové asynchronní příkazy:

Snímek blobu

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

Sdílet snímek

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

Obnovení dočasně smazaného objektu blob

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()

Nastavit vrstvu blobu

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 (dříve AzureRM.Websites)

  • Odebrání zastaralých vlastností z objektů PSAppServicePlan, PSCertificate, PSCloningInfoa PSSite

Další kroky