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:
- Doporučeno: Odinstalujte modul AzureRM. Ujistěte se, že odeberete všechny nainstalované verze AzureRM, nejen tu nejnovější verzi.
- instalace modulu Az
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-AzVM
a 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
aScmHostnameConfiguration
typuPsApiManagementHostnameConfiguration
zPsApiManagementContext
. Místo toho použijtePortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
aScmCustomHostnameConfiguration
typuPsApiManagementCustomHostNameConfiguration
. - Odebraná vlastnost
StaticIPs
z PsApiManagementContext. Nemovitost byla rozdělena doPublicIPAddresses
aPrivateIPAddresses
. - Byla odebrána požadovaná vlastnost
Location
z cmdletu New-AzureApiManagementVirtualNetwork.
- Odstraněna vlastnost
Az.Billing (dříve AzureRM.Billing, AzureRM.Consumption a AzureRM.UsageAggregates)
- Parametr
InvoiceName
byl z cmdletuGet-AzConsumptionUsageDetail
odebrán. Skripty budou muset pro fakturu použít jiné parametry identity.
Az.Compute (dříve AzureRM.Compute)
-
IdentityIds
jsou odebrány z vlastnostiIdentity
v objektechPSVirtualMachine
aPSVirtualMachineScaleSet
. Skripty by již neměly používat hodnotu tohoto pole k zpracovávání rozhodnutí. - Typ vlastnosti
InstanceView
objektuPSVirtualMachineScaleSetVM
se změní zVirtualMachineInstanceView
naVirtualMachineScaleSetVMInstanceView
- Vlastnosti
AutoOSUpgradePolicy
aAutomaticOSUpgrade
jsou odebrány z vlastnostiUpgradePolicy
. - Typ vlastnosti
Sku
v objektuPSSnapshotUpdate
se změní zDiskSku
naSnapshotSku
-
VmScaleSetVMParameterSet
se odebere z rutinyAdd-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
,PSKeyVaultKeyIdentityItem
aPSKeyVaultSecretAttributes
. Skripty by již neměly odkazovat na vlastnostPurgeDisabled
k rozhodování při zpracování.
Az.Monitor (dříve AzureRM.Insights)
Odstraněné názvy parametrů v množném čísle
Categories
aTimegrains
ve prospěch názvů parametrů v jednotném čísle z rutinSet-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 rutinyGet-AzServiceEndpointPolicyDefinition
- Odstraněna zastaralá vlastnost
EnableVmProtection
z objektuPSVirtualNetwork
- 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 rutinyNew/Set-AzPolicyAssignment
Odstraněn parametr
Password
z cmdletůNew-AzADServicePrincipal
aNew-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
- Příklad:
- Parametr
Location
se stal povinným v cmdletuGet-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
,PSCloningInfo
aPSSite
Další kroky
- Další informace o PowerShellu ve službě Azure Stack Hub najdete v tématu Začínáme s PowerShellem ve službě Azure Stack Hub
- Nainstalujte modul Az PowerShellu, viz Instalace modulu Az PowerShellu pro Azure Stack Hub