Migrace z AzureRM na Azure PowerShell Az ve službě Azure Stack Hub
Modul Az zajišťuje paritu funkcí s AzureRM, ale používá kratší a konzistentnější názvy rutin. Skripty napsané pro AzureRM nebudou automaticky fungovat s novým modulem. Pro usnadnění tohoto přechodu Az nabízí nástroje, které umožňují spouštět stávající skripty s využitím AzureRM. Migrace na novou sadu příkazů není nikdy nic příjemného, ale tento článek vám pomůže začít s přechodem na nový modul.
Úplný seznam všech zásadních změn mezi AzureRM a Az najdete v tématu Průvodce migrací pro Az 1.0.0.
Kontrola nainstalovaných verzí AzureRM
Než začnete provádět jakékoli kroky migrace, zkontrolujte, jaké verze AzureRM jsou ve vašem systému nainstalované. Získáte tak jistotu, že se skripty již spouštějí v nejnovější verzi, a zjistíte, jestli můžete povolit aliasy příkazů bez nutnosti odinstalovat AzureRM.
Pokud chcete zkontrolovat, jaké verze AzureRM máte nainstalované, spusťte následující příkaz:
Get-InstalledModule -Name AzureRM -AllVersions
Kontrola fungování aktuálních skriptů s AzureRM
To 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 vaší platformě. Pokud instalujete Az, doporučuje se odinstalovat AzureRM. V následujícím postupu se naučíte, jak dál spouštět stávající skripty a zajistit kompatibilitu pro staré názvy rutin.
Při instalaci modulu Az Azure PowerShellu postupujte takto:
- Doporučeno: Odinstalujte modul AzureRM. Ujistěte se, že jste odebrali všechny nainstalované verze AzureRM, ne jenom nejnovější verzi.
- Instalace modulu Az
Povolení aliasů kompatibility s AzureRM
Důležité
Režim kompatibility povolte pouze v případě, že jste odinstalovali všechny verze AzureRM. Povolení režimu kompatibility se stále dostupnými rutinami AzureRM může způsobit neočekávané chování. Pokud jste se rozhodli ponechat nainstalovaný modul AzureRM, tento krok přeskočte, ale mějte na paměti, že všechny rutiny AzureRM budou využívat starší moduly a nebudou volat žádné rutiny Az.
Když je modul AzureRM odinstalovaný a vaše skripty fungují s nejnovější verzí AzureRM, dalším krokem je povolit režim kompatibility pro modul Az. Kompatibilita se povoluje pomocí tohoto příkazu:
Enable-AzureRmAlias -Scope CurrentUser
Aliasy umožňují používat staré názvy rutin i s nainstalovaným modulem Az. Tyto aliasy se zapisují do profilu uživatele pro vybraný obor. Pokud žádný profil uživatele neexistuje, vytvoří se.
Upozornění
Pro tento příkaz můžete použít jiný obor -Scope
, ale nedoporučuje se to. Aliasy se zapisují do profilu uživatele pro vybraný obor, proto je povolte v co neomezenějším oboru. Povolení aliasů na úrovni celého systému by také mohlo způsobit potíže pro ostatní uživatele, kteří mají modul AzureRM nainstalovaný ve svém místním oboru.
Po povolení režimu aliasů spusťte vaše skripty znovu a potvrďte, že i dál fungují podle očekávání.
Změna názvů modulů a rutin
Obecně se názvy modulů změnily tak, aby se z AzureRM
a Azure
stalo Az
. Totéž platí i pro rutiny.
Například modul AzureRM.Compute
se přejmenoval na Az.Compute
. Z New-AzureRMVM
se stalo New-AzVM
a Get-AzureStorageBlob
je teď Get-AzStorageBlob
.
Pro tuto změnu pojmenování existují výjimky, o kterých byste měli vědět. Některé moduly se přejmenovaly nebo sloučily se stávajícími moduly, aniž by to mělo vliv na příponu příslušných rutin, kromě změny AzureRM
nebo Azure
na Az
. Jinak se změnila celá přípona rutiny, aby odrážela nový název modulu.
Modul AzureRM | Modul Az | Změnila se přípona rutiny? |
---|---|---|
AzureRM.Profile | Az.Accounts | Yes |
AzureRM.Insights | Az.Monitor | Yes |
AzureRM.Tags | Az.Resources | No |
AzureRM.UsageAggregates | Az.Billing | No |
AzureRM.Consumption | Az.Billing | No |
Souhrn
Pomocí tohoto postupu můžete aktualizovat všechny vaše stávající skripty tak, aby používaly nový modul. Pokud máte jakékoli dotazy nebo problémy s těmito kroky, které vaši migraci ztížily, přidejte k tomuto článku komentáře, abychom mohli uvedené pokyny vylepšit.
Zásadní změny v 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 nebo novější. Obsah vám pomůže zorientovat se v celé cestě k migraci, včetně změn specifických pro jednotlivé moduly, které můžou mít vliv na vaše skripty.
Obecné zásadní změny
Tato část podrobně popisuje obecné zásadní změny v souvislosti s přepracováním modulu Az.
Změny předpon podstatných jmen rutin
V modulu AzureRM rutiny jako předponu používaly AzureRM
nebo Azure
. Az názvy rutin zjednodušuje a normalizuje, aby všechny rutiny jako předponu používaly Az. Příklad:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Po změně:
Get-AzVM
Get-AzKeyVaultSecret
Pro zjednodušení přechodu na tyto nové názvy rutin Az zavádí dvě nové rutiny – Enable-AzureRmAlias a Disable-AzureRmAlias.
Enable-AzureRmAlias
vytvoří aliasy pro starší názvy rutin v AzureRM, které se mapují na novější názvy rutin Az. Pomocí argumentu -Scope
v rutině Enable-AzureRmAlias
můžete zvolit, kde se mají aliasy povolit.
Například následující skript v AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
je možné spustit s minimálními změnami s využitím rutiny Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Spuštěním rutiny Enable-AzureRmAlias -Scope CurrentUser
se povolí aliasy pro všechny relace PowerShellu, které otevřete, aby nebylo nutné nijak měnit podobné skripty:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Úplné podrobnosti o používání aliasů rutin najdete v referenčních informacích k rutině Enable-AzureRmAlias.
Jakmile budete připraveni zakázat aliasy, rutinou Disable-AzureRmAlias
se odeberou vytvořené aliasy. Úplné podrobnosti najdete v referenčních informacích k rutině Disable-AzureRmAlias.
Důležité
Při zakazování aliasů se ujistěte, že se zakáží pro všechny obory, ve kterých byly povolené.
Změny názvů modulů
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 v názvech modulů znamenají, že všechny skripty, které k načtení konkrétních modulů používají příkazy #Requires
a Import-Module
, bude potřeba změnit tak, aby místo toho používaly nové názvy modulů. Pro moduly, ve kterých se přípona rutiny nezměnila, to znamená, že i když se změnil název modulu, přípona označující pracovní prostor se nezměnila.
Migrace vyžaduje příkazy modulu a příkazy importu
Skripty, které pomocí příkazu #Requires
nebo Import-Module
deklarují závislost na modulech AzureRM, je potřeba aktualizovat tak, aby používaly nové názvy modulů. Příklad:
#Requires -Module AzureRM.Compute
je potřeba změnit na:
#Requires -Module Az.Compute
Příkaz Import-Module
:
Import-Module -Name AzureRM.Compute
je potřeba změnit na:
Import-Module -Name Az.Compute
Migrace plně kvalifikovaných volání rutin
Skripty, které používají plně kvalifikovaná volání rutin, jako například:
AzureRM.Compute\Get-AzureRmVM
je potřeba změnit tak, aby používaly nové názvy modulů a rutin:
Az.Compute\Get-AzVM
Migrace závislostí manifestu modulu
V modulech, které vyjadřují závislosti na modulech AzureRM prostřednictvím souboru manifestu modulu (.psd1), bude potřeba aktualizovat názvy modulů v části RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
je potřeba změnit na:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Odebrané moduly
Následující moduly se odebraly:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Nástroje pro tyto služby se už aktivně nepodporují. Doporučujeme zákazníkům co nejdříve přejít na alternativní služby.
Windows PowerShell 5.1 a .NET 4.7.2
K používání Az s PowerShellem 5.1 pro Windows se vyžaduje instalace rozhraní .NET Framework 4.7.2. K používání PowerShellu Core 6.x nebo novějšího se rozhraní .NET Framework nevyžaduje.
Dočasné odebrání přihlášení uživatele pomocí PSCredential
Kvůli změnám v toku ověřování pro .NET Standard dočasně odebíráme možnost přihlášení uživatele prostřednictvím objektu PSCredential. Tato možnost bude znovu zavedená ve verzi PowerShellu 5.1 pro Windows vydané 15. 1. 2019. Podrobnosti najdete u tohoto problému na GitHubu.
Výchozí přihlášení kódem zařízení místo výzvy ve webovém prohlížeči
Kvůli změnám v toku ověřování pro .NET Standard jako výchozí tok přihlášení při interaktivním přihlašování používáme přihlášení zařízení. Přihlášení ve webovém prohlížeči jako výchozí možnost bude znovu zavedeno ve verzi PowerShellu 5.1 pro Windows vydané 15. 1. 2019. Uživatelé pak budou mít možnost zvolit přihlášení zařízení pomocí přepínacího parametru.
Zásadní změny modulů
Tato část podrobně popisuje konkrétní zásadní změny jednotlivých modulů a rutin.
Az.ApiManagement (dříve AzureRM.ApiManagement)
- Odebraly se následující rutiny:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- K nastavení těchto vlastností místo toho použijte rutinu Set-AzApiManagement.
- Odebraly se následující vlastnosti:
- Odebrání vlastností
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
aScmHostnameConfiguration
typuPsApiManagementHostnameConfiguration
z třídyPsApiManagementContext
. Místo toho použijtePortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
aScmCustomHostnameConfiguration
typuPsApiManagementCustomHostNameConfiguration
. - Odebrání vlastnosti
StaticIPs
z třídy PsApiManagementContext. Tato vlastnost se rozdělila naPublicIPAddresses
aPrivateIPAddresses
. - Odebrání požadované vlastnosti
Location
z rutiny New-AzureApiManagementVirtualNetwork.
- Odebrání vlastností
Az.Billing (dříve AzureRM.Billing, AzureRM.Consumption a AzureRM.UsageAggregates)
- Z rutiny
Get-AzConsumptionUsageDetail
se odebral parametrInvoiceName
. Skripty budou muset pro práci s fakturou používat jiné parametry identity.
Az.Compute (dříve AzureRM.Compute)
- Z vlastnosti
Identity
v objektechPSVirtualMachine
aPSVirtualMachineScaleSet
se odebraly hodnotyIdentityIds
. Skripty už by se při zpracování neměly rozhodovat podle hodnoty tohoto pole. - Typ vlastnosti
InstanceView
objektuPSVirtualMachineScaleSetVM
se změnil zVirtualMachineInstanceView
naVirtualMachineScaleSetVMInstanceView
. - Z vlastnosti
UpgradePolicy
se odebraly vlastnostiAutoOSUpgradePolicy
aAutomaticOSUpgrade
. - Typ vlastnosti
Sku
v objektuPSSnapshotUpdate
se změnil zDiskSku
naSnapshotSku
. -
VmScaleSetVMParameterSet
se odebrala z rutinyAdd-AzVMDataDisk
a už není možné přidávat datové disky do jednotlivých virtuálních počítačů škálovacích sad.
Az.KeyVault (dříve AzureRM.KeyVault)
- Z objektů
PSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
aPSKeyVaultSecretAttributes
se odebrala vlastnostPurgeDisabled
. Skripty už by se při zpracování neměly rozhodovat podle vlastnostiPurgeDisabled
.
Az.Monitor (dříve AzureRM.Insights)
Odebrání názvů parametrů
Categories
aTimegrains
v množném čísle z rutinySet-AzDiagnosticSetting
a jejich nahrazení názvy parametrů v jednotném čísle. Skripty používajícíSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
je potřeba 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
. - Odebrání zastaralé vlastnosti
EnableVmProtection
z objektuPSVirtualNetwork
. - Odebrání zastaralé rutiny
Set-AzVirtualNetworkGatewayVpnClientConfig
.
Skripty už by se při zpracování neměly rozhodovat na základě hodnot v těchto polích.
Az.Resources (dříve AzureRM.Resources)
Odebrání parametru
Sku
z rutinyNew/Set-AzPolicyAssignment
.Odebrání parametru
Password
z rutinNew-AzADServicePrincipal
aNew-AzADSpCredential
. Hesla se generují automaticky. Skripty, u kterých se zadávalo heslo:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
by se měly změnit tak, aby heslo načítaly z výstupu:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (dříve Azure.Storage a AzureRM.Storage)
- Pro zajištění podpory vytvoření kontextu úložiště OAuth pouze s použitím názvu účtu úložiště se výchozí sada parametrů změnila na
OAuthParameterSet
.- Příklad:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Příklad:
- Parametr
Location
se stal povinným v rutiněGet-AzStorageUsage
. - Metody rozhraní API služby Storage teď místo synchronních volání rozhraní API používají Asynchronní model založený na úkolech (TAP). Následující příklady ukazují nové asynchronní příkazy:
Snímek objektu blob
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
Snímek sdílené složky
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í obnovitelně odstraněné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()
Nastavení úrovně objektu blob
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.