Migreren van AzureRM naar Azure PowerShell Az in Azure Stack Hub
De Az-module heeft functiepariteit met AzureRM, maar gebruikt kortere en consistentere cmdlet-namen. Scripts die zijn geschreven voor de AzureRM-cmdlets werken niet automatisch met de nieuwe module. Voor een gemakkelijkere overgang biedt Az hulpprogramma's waarmee u uw huidige scripts die gebruikmaken van AzureRM kunt uitvoeren. Migreren naar een nieuwe opdrachtset is nooit fijn, maar in dit artikel helpen we u aan de slag met de overgang naar de nieuwe module.
Zie voor de volledige lijst met wijzigingen die fouten veroorzaken tussen AzureRM en Az de Az 1.0.0-migratiehandleiding
Controleer op geïnstalleerde versies van AzureRM
Controleer voordat u migratiestappen onderneemt welke versies van AzureRM op uw systeem zijn geïnstalleerd. Zo komt u erachter of uw scripts volgens de nieuwste versie worden uitgevoerd en of u opdrachtaliassen kunt inschakelen zonder AzureRM te verwijderen.
Voer de opdracht uit om te kijken welke versie(s) van AzureRM u hebt geïnstalleerd:
Get-InstalledModule -Name AzureRM -AllVersions
Controleren of de huidige scripts werken met AzureRM
Dit is de belangrijkste stap! Voer uw bestaande scripts uit en zorg ervoor dat deze werken met de nieuwste versie van AzureRM (2.5.0). Als uw scripts niet werken, leest u de migratiehandleiding van AzureRM.
De Az-module van Azure PowerShell installeren
U moet om te beginnen de Az-module op uw platform installeren. Wanneer u Az installeert, verdient het aanbeveling AzureRM te verwijderen. In de volgende stappen wordt uitgelegd hoe u uw huidige scripts kunt blijven uitvoeren en hoe u compatibiliteit met oude cmdlet-namen kunt inschakelen.
Ga als volgt te werk om de Az-module van Azure PowerShell te installeren:
- Aanbevolen: verwijder de AzureRM-module. Zorg ervoor dat u alle geïnstalleerde versies van AzureRM verwijdert, niet alleen de recentste versie.
- De Az-module installeren
Compatibiliteitsaliassen van AzureRM inschakelen
Belangrijk
Schakel de compatibiliteitsmodus alleen in als u alle versies van AzureRM hebt verwijderd. De compatibiliteitsmodus inschakelen terwijl de AzureRM-cmdlets nog steeds beschikbaar zijn, kan leiden tot onvoorspelbaar gedrag. Sla deze stap over als u AzureRM wilt behouden. Houd er echter rekening mee dat AzureRM-cmdlets de oudere modules gebruiken en geen Az-cmdlets aanroepen.
Wanneer u AzureRM hebt verwijderd en uw scripts werken met de nieuwste versie van AzureRM, is de volgende stap het inschakelen van de compatibiliteitsmodus voor de Az-module. Gebruik de volgende opdracht om compatibiliteit in te schakelen:
Enable-AzureRmAlias -Scope CurrentUser
Met aliassen kunt u de oude cmdlet-namen gebruiken met de geïnstalleerde Az-module. Deze aliassen worden voor het geselecteerde bereik naar het gebruikersprofiel geschreven. Als er geen gebruikersprofiel bestaat, wordt er een gemaakt.
Waarschuwing
U kunt een andere -Scope
voor deze opdracht gebruiken, maar dat raden we niet aan. Aliassen worden voor het geselecteerde bereik naar het gebruikersprofiel geschreven, dus schakel deze voor een zo beperkt mogelijk bereik in. Als u aliassen voor het gehele systeem inschakelt, kan dit problemen veroorzaken voor andere gebruikers die AzureRM hebben geïnstalleerd in hun lokale bereik.
Wanneer de aliasmodus is ingeschakeld, voert u uw scripts opnieuw uit om te bevestigen dat ze nog steeds naar verwachting werken.
Namen van modules en cmdlets wijzigen
Over het algemeen zijn de modulenamen aangepast, waardoor AzureRM
en Azure
zijn gewijzigd in Az
. Hetzelfde geldt voor cmdlets.
De naam van de module AzureRM.Compute
is bijvoorbeeld gewijzigd in Az.Compute
.
New-AzureRMVM
is gewijzigd in New-AzVM
en Get-AzureStorageBlob
is nu Get-AzStorageBlob
.
Er zijn enkele uitzonderingen op deze naamswijzigingen waarvan u op de hoogte moet zijn. Sommige modules hebben een andere naam gekregen of zijn samengevoegd met bestaande modules zonder invloed op het achtervoegsel van de cmdlets, behalve een wijziging van AzureRM
of Azure
naar Az
. Anders is het achtervoegsel van de volledige cmdlet gewijzigd om de naam van de nieuwe module weer te geven.
AzureRM-module | Az-module | Achtervoegsel van cmdlet gewijzigd? |
---|---|---|
AzureRM.Profile | Az.Accounts | Ja |
AzureRM.Insights | Az.Monitor | Ja |
AzureRM.Tags | Az.Resources | Nee |
AzureRM.UsageAggregates | Az.Billing | Nee |
AzureRM.Consumption | Az.Billing | Nee |
Samenvatting
Wanneer u deze stappen volgt, kunt u al uw huidige scripts bijwerken zodat ze werken met de nieuwe module. Als u vragen hebt of problemen ondervindt met deze stappen waardoor uw migratie werd bemoeilijkt, kunt u reageren op dit artikel zodat we de instructies kunnen verbeteren.
Wijzigingen die fouten veroorzaken voor Az 1.0.0
Dit document geeft gedetailleerde informatie over de wijzigingen tussen AzureRM 6.x en de nieuwe Az-module, versie 1.x en hoger. De inhoudsopgave helpt u bij het doorlopen van een volledig migratiepad, inclusief module-specifieke wijzigingen die van invloed kunnen zijn op uw scripts.
Algemene belangrijke wijzigingen
In deze sectie wordt nader ingegaan op de algemene belangrijke wijzigingen die deel uitmaken van het herontwerp van de Az-module.
Wijzigingen in het voorvoegsel van cmdlet
In de AzureRM-module gebruikten cmdlets AzureRM
of Azure
als voorvoegsel. Az vereenvoudigt en normaliseert cmdlets-namen, zodat alle cmdlets 'Az' gebruiken als voorvoegsel. Bijvoorbeeld:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Is gewijzigd in:
Get-AzVM
Get-AzKeyVaultSecret
Om de overgang naar deze nieuwe cmdlet-namen eenvoudiger te maken, introduceert Az twee nieuwe cmdlets: Enable-AzureRmAlias en Disable-AzureRmAlias.
Enable-AzureRmAlias
maakt aliassen voor de oude cmdlets-namen in AzureRM die worden toegewezen aan de nieuwe namen van Az-cmdlets. Met behulp van argument -Scope
met Enable-AzureRmAlias
kunt u kiezen waar aliassen worden ingeschakeld.
Neem bijvoorbeeld het volgende script in AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Kan met minimale wijzigingen worden uitgevoerd met behulp van Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Als u Enable-AzureRmAlias -Scope CurrentUser
uitvoert, worden de aliassen ingeschakeld voor alle PowerShell-sessies die u opent, zodat een dergelijk script na uitvoering van deze cmdlet helemaal niet meer hoeft te worden gewijzigd:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Voor volledige details over het gebruik van de alias-cmdlets, zie de Enable-AzureRmAlias-referentie.
Wanneer u klaar bent om aliassen uit te schakelen, verwijdert Disable-AzureRmAlias
de gemaakte aliassen. Voor volledige details, zie de Disable-AzureRmAlias-referentie.
Belangrijk
Wanneer u aliassen uitschakelt, zorg er dan voor dat ze uitgeschakeld zijn voor alle bereiken waarvoor aliassen waren ingeschakeld.
Wijzigingen in de modulenaam
De modulenamen zijn gewijzigd van AzureRM.*
in Az.*
, behalve voor de volgende modules:
AzureRM-module | Az-module |
---|---|
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 |
De wijzigingen in de modulenamen betekenen dat elk script dat #Requires
of Import-Module
gebruikt om specifieke modules te laden, zodanig moet worden gewijzigd dat de nieuwe modulenaam wordt gebruikt. Voor modules waarbij het cmdlet-achtervoegsel niet is gewijzigd, betekent dit dat de naam van de module weliswaar is gewijzigd, maar het achtervoegsel dat de werkruimte aangeeft, juist niet.
Migreren van module-instructies voor vereist en importeren
Scripts waarin #Requires
of Import-Module
wordt gebruikt om een afhankelijkheid van AzureRM-modules te declareren, moeten worden bijgewerkt om de nieuwe modulenamen te gebruiken. Bijvoorbeeld:
#Requires -Module AzureRM.Compute
Moet worden gewijzigd in:
#Requires -Module Az.Compute
Voor Import-Module
:
Import-Module -Name AzureRM.Compute
Moet worden gewijzigd in:
Import-Module -Name Az.Compute
Volledig gekwalificeerde cmdlet-aanroepen migreren
Scripts die gebruikmaken van volledig gekwalificeerde cmdlet-aanroepen, zoals:
AzureRM.Compute\Get-AzureRmVM
Moeten zodanig worden gewijzigd dat de nieuwe module- en cmdlet-namen worden gebruikt:
Az.Compute\Get-AzVM
Afhankelijkheden van modulemanifesten migreren
In modules waarin afhankelijkheden van AzureRM-modules worden uitgedrukt via een modulemanifestbestand (.psd1), moeten de modulenamen worden bijgewerkt in de sectie RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Moet worden gewijzigd in:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Verwijderde modules
De volgende modules zijn verwijderd:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
De hulpprogramma's voor deze services worden niet langer actief ondersteund. Klanten worden aangeraden om alternatieve services te verplaatsen wanneer dit uitkomt.
Windows PowerShell 5.1 en .NET 4.7.2
Als u Az met PowerShell 5.1 voor Windows gebruikt, is de installatie van .NET Framework 4.7.2 vereist. Het gebruik van PowerShell Core 6.x of hoger vereist geen .NET Framework.
Tijdelijke verwijdering van gebruikersaanmelding met BEHULP van PSCredential
Door wijzigingen in de verificatiestroom voor .NET Standard, verwijderen we tijdelijk gebruikersaanmelding met PSCredential. Deze mogelijkheid wordt opnieuw geïntroduceerd in de versie van 15-01-2019 voor PowerShell 5.1 voor Windows. Dit wordt uitgebreid besproken in dit GitHub-probleem.
Standaardaanmelding met apparaatcode in plaats van webbrowserprompt
Vanwege wijzigingen in de verificatiestroom voor .NET Standard, gebruiken we apparaataanmelding als de standaardaanmeldmethode tijdens interactieve aanmeldingen. Aanmelding op basis van de webbrowser wordt opnieuw geïntroduceerd als standaardmethode voor PowerShell 5.1 voor Windows in de versie van 15-01-2019. Gebruikers kunnen dan kiezen voor apparaataanmelding met een Switch-parameter.
Belangrijke modulewijzigingen
In deze sectie worden specifieke belangrijke wijzigingen voor individuele modules en cmdlets beschreven.
Az.ApiManagement (eerder AzureRM.ApiManagement)
- De volgende cmdlets zijn verwijderd:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Gebruik in plaats daarvan de cmdlet Set-AzApiManagement om deze eigenschappen in te stellen
- De volgende eigenschappen zijn verwijderd:
- De eigenschappen
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
enScmHostnameConfiguration
van typePsApiManagementHostnameConfiguration
vanPsApiManagementContext
zijn verwijderd. Gebruik in plaats daarvanPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
.ManagementCustomHostnameConfiguration
enScmCustomHostnameConfiguration
van typePsApiManagementCustomHostNameConfiguration
. - Eigenschap
StaticIPs
is verwijderd uit PsApiManagementContext. De eigenschap is gesplitst inPublicIPAddresses
enPrivateIPAddresses
. - De vereiste eigenschap
Location
is verwijderd uit de cmdlet New-AzureApiManagementVirtualNetwork.
- De eigenschappen
Az.Billing (eerder AzureRM.Billing, AzureRM.Consumption en AzureRM.UsageAggregates)
- De parameter
InvoiceName
is verwijderd uit de cmdletGet-AzConsumptionUsageDetail
. Scripts moeten andere identiteitsparameters voor aanroepen gebruiken.
Az.Compute (eerder AzureRM.Compute)
-
IdentityIds
wordt verwijderd uit de eigenschapIdentity
in de objectenPSVirtualMachine
enPSVirtualMachineScaleSet
. Scripts zouden de waarde van dit veld niet langer moeten gebruiken voor verwerkingsbesluiten. - Het type van eigenschap
InstanceView
van objectPSVirtualMachineScaleSetVM
is gewijzigd vanVirtualMachineInstanceView
inVirtualMachineScaleSetVMInstanceView
- De eigenschappen
AutoOSUpgradePolicy
enAutomaticOSUpgrade
zijn verwijderd uit de eigenschapUpgradePolicy
- Het type van de eigenschap
Sku
in objectPSSnapshotUpdate
is gewijzigd vanDiskSku
inSnapshotSku
-
VmScaleSetVMParameterSet
is verwijderd uit de cmdletAdd-AzVMDataDisk
, u kunt een dataschijf niet langer afzonderlijk toevoegen aan een schaalset-VM.
Az.KeyVault (eerder AzureRM.KeyVault)
- De eigenschap
PurgeDisabled
is verwijderd uit de objectenPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
enPSKeyVaultSecretAttributes
. Scripts moeten niet langer verwijzen naar de eigenschapPurgeDisabled
voor verwerkingsbesluiten.
Az.Monitor (eerder AzureRM.Insights)
De meervoudsnamen
Categories
en parameterTimegrains
zijn verwijderd ten behoeve van enkelvoudige parameternamen uit de cmdletSet-AzDiagnosticSetting
. Scripts die gebruikmaken vanSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Moeten worden gewijzigd in
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (eerder AzureRM.Network)
- De afgeschafte parameter
ResourceId
is verwijderd uit de cmdletGet-AzServiceEndpointPolicyDefinition
- De afgeschafte eigenschap
EnableVmProtection
is verwijderd uit het objectPSVirtualNetwork
- De afgeschafte cmdlet
Set-AzVirtualNetworkGatewayVpnClientConfig
is verwijderd
Scripts zouden niet langer verwerkingsbesluiten moeten maken op basis van de waarden in deze velden.
Az.Resources (eerder AzureRM.Resources)
De parameter
Sku
is verwijderd uit cmdletNew/Set-AzPolicyAssignment
De parameter
Password
is verwijderd uit de cmdletNew-AzADServicePrincipal
enNew-AzADSpCredential
. Wachtwoorden worden automatisch gegeneerd, scripts die het wachtwoord opgeven:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Moet worden gewijzigd om het wachtwoord uit de uitvoer op te halen:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (eerder Azure.Storage en AzureRM.Storage)
- Ter ondersteuning van het maken van een Oauth-opslagcontext met alleen de naam van het opslagaccount, is de standaardparameterset gewijzigd in
OAuthParameterSet
- Voorbeeld:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Voorbeeld:
- De parameter
Location
is verplicht geworden in de cmdletGet-AzStorageUsage
- De opslag-API-methoden gebruiken het Task-based Asynchronous Pattern (TAP), in plaats van synchrone API-aanroepen. De volgende voorbeelden tonen de nieuwe asynchrone opdrachten:
Blob-momentopname
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
Momentopname delen
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
Voorlopige verwijdering van blob ongedaan maken
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()
Bloblaag instellen
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 (eerder AzureRM.Websites)
- De afgeschafte eigenschappen zijn verwijderd uit de objecten
PSAppServicePlan
,PSCertificate
,PSCloningInfo
enPSSite
Volgende stappen
- Zie Aan de slag met PowerShell in Azure Stack Hub voor meer informatie over PowerShell in Azure Stack Hub
- Installeer de PowerShell Az-module. Zie PowerShell Az-module installeren voor Azure Stack Hub