Migreren van AzureRM naar Azure PowerShell Az in Azure Stack Hub
De Az-module heeft functiepariteit met AzureRM, maar maakt gebruik van kortere en consistentere cmdlet-namen. Scripts die zijn geschreven voor de AzureRM-cmdlets, werken niet automatisch met de nieuwe module. Om de overgang eenvoudiger te maken, biedt Az hulpprogramma's waarmee u uw bestaande scripts kunt uitvoeren met behulp van AzureRM. Geen migratie naar een nieuwe opdrachtenset is ooit gemakkelijk, maar dit artikel helpt u bij de overgang naar de nieuwe module.
Zie de Migratiehandleiding voor Az 1.0.0 voor een volledige lijst met belangrijke wijzigingen tussen AzureRM en Az
Controleren op geïnstalleerde versies van AzureRM
Voordat u migratiestappen uitvoert, controleert u welke versies van AzureRM op uw systeem zijn geïnstalleerd. Hierdoor kunt u ervoor zorgen dat scripts al worden uitgevoerd in de nieuwste versie en u laten weten of u opdrachtaliassen kunt inschakelen zonder AzureRM te verwijderen.
Voer de opdracht uit om te controleren welke versie(s) van AzureRM u hebt geïnstalleerd:
Get-InstalledModule -Name AzureRM -AllVersions
Controleren of huidige scripts werken met AzureRM
Dit is de belangrijkste stap! Voer uw bestaande scripts uit en zorg ervoor dat ze werken met de nieuwste release van AzureRM (2.5.0). Als uw scripts niet werken, lees dan de AzureRM-migratiehandleiding.
De Az-module van Azure PowerShell installeren
De eerste stap is het installeren van de Az-module op uw platform. Wanneer u Az installeert, wordt u aangeraden AzureRM te verwijderen. In de volgende stappen leert u hoe u uw bestaande scripts kunt blijven uitvoeren en compatibiliteit kunt inschakelen voor oude cmdlet-namen.
Voer de volgende stappen uit om de Az-module van Azure PowerShell te installeren:
- Aanbevolen: de AzureRM-module deïnstalleren. Zorg ervoor dat u alle geïnstalleerde versies van AzureRM verwijdert, niet alleen de meest recente versie.
- De Az-module installeren
AzureRM-compatibiliteitsaliassen inschakelen
Belangrijk
Schakel de compatibiliteitsmodus alleen in als u alle versies van AzureRM hebt verwijderd. Het inschakelen van de compatibiliteitsmodus met AzureRM-cmdlets die nog steeds beschikbaar zijn, kan onvoorspelbaar gedrag tot gevolg hebben. Sla deze stap over als u besluit Om AzureRM geïnstalleerd te houden, maar houd er rekening mee dat alle AzureRM-cmdlets gebruikmaken van de oudere modules en geen Az-cmdlets aanroepen.
Als AzureRM is verwijderd en uw scripts werken met de nieuwste Versie van AzureRM, is de volgende stap het inschakelen van de compatibiliteitsmodus voor de Az-module. Compatibiliteit is ingeschakeld met de opdracht:
Enable-AzureRmAlias -Scope CurrentUser
Met aliassen kunt u oude cmdlet-namen gebruiken waarop de Az-module is geïnstalleerd. Deze aliassen worden geschreven naar het gebruikersprofiel voor het geselecteerde toepassingsgebied. Als er geen gebruikersprofiel bestaat, wordt er een gemaakt.
Waarschuwing
U kunt voor deze opdracht een andere -Scope
gebruiken, maar dit wordt niet aanbevolen. Aliassen worden geschreven naar het gebruikersprofiel voor het geselecteerde bereik, dus zorg ervoor dat ze zo beperkt mogelijk een bereik hebben. Het inschakelen van aliassen voor het hele systeem kan ook problemen veroorzaken voor andere gebruikers waarop AzureRM is geïnstalleerd in hun lokale bereik.
Zodra de aliasmodus is ingeschakeld, voert u de scripts opnieuw uit om te bevestigen dat ze nog steeds werken zoals verwacht.
Module- en cmdlet-namen wijzigen
Over het algemeen zijn de modulenamen gewijzigd, zodat AzureRM
en Azure
Az
worden, en hetzelfde voor cmdlets.
De naam van de AzureRM.Compute
-module is bijvoorbeeld gewijzigd in Az.Compute
.
New-AzureRMVM
is New-AzVM
geworden en Get-AzureStorageBlob
is nu Get-AzStorageBlob
.
Er zijn uitzonderingen op deze naamgevingswijziging waarvan u rekening moet houden. Sommige modules zijn hernoemd of samengevoegd in bestaande modules zonder dat dit van invloed is op het achtervoegsel van hun cmdlets, behalve het wijzigen van AzureRM
of Azure
in Az
. Anders is het volledige cmdlet-achtervoegsel gewijzigd om de naam van de nieuwe module weer te geven.
AzureRM-module | Az-module | Cmdlet-achtervoegsel 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
Door deze stappen te volgen, kunt u al uw bestaande scripts bijwerken om de nieuwe module te gebruiken. Als u vragen of problemen hebt met deze stappen waardoor uw migratie moeilijk is, kunt u commentaar geven op dit artikel, zodat we de instructies kunnen verbeteren.
Belangrijke wijzigingen voor Az 1.0.0
Dit document bevat 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 modulespecifieke wijzigingen die van invloed kunnen zijn op uw scripts.
Algemene ingrijpende veranderingen
In deze sectie worden de algemene belangrijke wijzigingen beschreven die deel uitmaken van het herontwerp van de Az-module.
Wijzigingen in naamwoordvoorvoegsel voor cmdlets
In de AzureRM-module gebruikten cmdlets AzureRM
of Azure
als een voorvoegsel voor het zelfstandig naamwoord. Az vereenvoudigt en normaliseert cmdlet-namen, zodat alle cmdlets 'Az' gebruiken als hun voorvoegsel voor het zelfstandig naamwoord. 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 oudere cmdlet-namen in AzureRM die corresponderen met de nieuwere Az-cmdletnamen. Met behulp van het argument -Scope
met Enable-AzureRmAlias
kunt u kiezen waar aliassen zijn ingeschakeld.
Bijvoorbeeld het volgende script in AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Kan worden uitgevoerd met minimale wijzigingen 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 na het uitvoeren van deze cmdlet een script zoals dit helemaal niet hoeft te worden gewijzigd:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Voor volledige details over het gebruik van de alias-cmdlets, zie de Enable-AzureRmAlias verwijzing.
Wanneer u klaar bent om aliassen uit te schakelen, verwijdert Disable-AzureRmAlias
de gemaakte aliassen. Zie de Disable-AzureRmAlias-verwijzingvoor meer informatie.
Belangrijk
Wanneer u aliassen uitschakelt, moet u ervoor zorgen dat ze zijn uitgeschakeld voor alle domeinen waarop aliassen eerder waren ingeschakeld.
Wijzigingen in modulenaam
De modulenamen zijn gewijzigd van AzureRM.*
in Az.*
, met uitzondering van 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 modulenamen betekenen dat elk script dat gebruikmaakt van #Requires
of Import-Module
om specifieke modules te laden, moet worden gewijzigd om in plaats daarvan de nieuwe module te kunnen gebruiken. Voor modules waarin het cmdlet-achtervoegsel niet is gewijzigd, betekent dit dat hoewel de modulenaam is gewijzigd, het achtervoegsel dat aangeeft dat de bewerkingsruimte nietheeft.
Voor migratie zijn moduleverklaringen vereist en moeten deze worden geïmporteerd
Scripts die gebruikmaken van #Requires
of Import-Module
om een afhankelijkheid van AzureRM-modules te declareren, moeten worden bijgewerkt om de nieuwe modulenamen te kunnen 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 door module gekwalificeerde cmdlet-aanroepen, zoals:
AzureRM.Compute\Get-AzureRmVM
Moet worden gewijzigd om de nieuwe module- en cmdlet-namen te kunnen gebruiken:
Az.Compute\Get-AzVM
Afhankelijkheden van modulemanifest migreren
Modules die afhankelijkheden van AzureRM-modules uitdrukken via een modulemanifestbestand (.psd1), moeten de modulenamen in hun RequiredModules
sectie bijwerken:
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 meer actief ondersteund. Klanten worden aangemoedigd om over te stappen op alternatieve services zodra het handig is.
Windows PowerShell 5.1 en .NET 4.7.2
Voor het gebruik van Az met PowerShell 5.1 voor Windows is de installatie van .NET Framework 4.7.2 vereist. Voor het gebruik van PowerShell Core 6.x of hoger is geen .NET Framework vereist.
Tijdelijke verwijdering van gebruikersaanmelding met PSCredential
Vanwege wijzigingen in de verificatiestroom voor .NET Standard verwijderen we tijdelijk gebruikersaanmelding via PSCredential. Deze mogelijkheid wordt opnieuw geïntroduceerd in de release van 15-15-2019 voor PowerShell 5.1 voor Windows. Dit wordt uitgebreid besproken in dit GitHub-probleem.
Standaardaanmelding met apparaatcode in plaats van een browsermelding
Vanwege wijzigingen in de verificatiestroom voor .NET Standard gebruiken we apparaataanmelding als de standaardaanmeldingsstroom tijdens interactieve aanmelding. Webbrowser-gebaseerd inloggen zal opnieuw worden geïntroduceerd als de standaard voor PowerShell 5.1 voor Windows in de release van 15 januari 2019. Op dat moment kunnen gebruikers apparaataanmelding kiezen met behulp van een switchparameter.
Wijzigingen die fouten veroorzaken in de module
In deze sectie worden specifieke ingrijpende wijzigingen voor afzonderlijke modules en cmdlets beschreven.
Az.ApiManagement (eerder AzureRM.ApiManagement)
- De volgende cmdlets zijn verwijderd:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Gebruik cmdlet Set-AzApiManagement om deze eigenschappen in te stellen
- De volgende eigenschappen zijn verwijderd:
- Eigenschappen
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
enScmHostnameConfiguration
van het typePsApiManagementHostnameConfiguration
zijn verwijderd uitPsApiManagementContext
. Gebruik in plaats daarvanPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
enScmCustomHostnameConfiguration
van het typePsApiManagementCustomHostNameConfiguration
. - Eigenschap
StaticIPs
verwijderd uit PsApiManagementContext. De eigenschap is opgesplitst inPublicIPAddresses
enPrivateIPAddresses
. - Vereiste eigenschap
Location
verwijderd uit New-AzureApiManagementVirtualNetwork cmdlet.
- 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 de factuur gebruiken.
Az.Compute (eerder AzureRM.Compute)
-
IdentityIds
worden verwijderd uitIdentity
eigenschap inPSVirtualMachine
enPSVirtualMachineScaleSet
objecten scripts mogen de waarde van dit veld niet langer gebruiken om verwerkingsbeslissingen te nemen. - Het type eigenschap van
InstanceView
vanPSVirtualMachineScaleSetVM
object wordt gewijzigd vanVirtualMachineInstanceView
inVirtualMachineScaleSetVMInstanceView
-
AutoOSUpgradePolicy
- enAutomaticOSUpgrade
-eigenschappen worden verwijderd uitUpgradePolicy
eigenschap - Het type eigenschap
Sku
inPSSnapshotUpdate
object wordt gewijzigd vanDiskSku
inSnapshotSku
-
VmScaleSetVMParameterSet
wordt verwijderd uitAdd-AzVMDataDisk
cmdlet, kunt u een gegevensschijf niet meer afzonderlijk toevoegen aan een ScaleSet-VM.
Az.KeyVault (eerder AzureRM.KeyVault)
- De eigenschap
PurgeDisabled
is verwijderd uit dePSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
enPSKeyVaultSecretAttributes
objecten scripts mogen niet langer verwijzen naar de eigenschapPurgeDisabled
om verwerkingsbeslissingen te nemen.
Az.Monitor (eerder AzureRM.Insights)
Meervoudsnamen
Categories
enTimegrains
parameter verwijderd ten gunste van enkelvoudige parameternamen uitSet-AzDiagnosticSetting
cmdlet Scripts met behulp vanSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Moet worden gewijzigd in
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (eerder AzureRM.Network)
- Verouderde
ResourceId
parameter verwijderd uitGet-AzServiceEndpointPolicyDefinition
cmdlet - Afgeschafte
EnableVmProtection
eigenschap verwijderd uitPSVirtualNetwork
-object - Verouderde
Set-AzVirtualNetworkGatewayVpnClientConfig
cmdlet verwijderd
Scripts mogen geen verwerkingsbeslissingen meer nemen op basis van de waarden voor deze velden.
Az.Resources (eerder AzureRM.Resources)
Parameter
Sku
verwijderd uitNew/Set-AzPolicyAssignment
cmdletDe parameter
Password
verwijderd uit de cmdletsNew-AzADServicePrincipal
enNew-AzADSpCredential
. Wachtwoorden worden automatisch gegenereerd, scripts die het wachtwoord hebben opgegeven:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Moet worden gewijzigd om het wachtwoord op te halen uit de uitvoer:
$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 storage-API-methoden gebruiken nu het op taken gebaseerde Asynchrone patroon (TAP) in plaats van synchrone API-aanroepen. In de volgende voorbeelden ziet u 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
Voorlopig verwijderde 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)
- Afgeschafte eigenschappen verwijderd uit de objecten
PSAppServicePlan
,PSCertificate
,PSCloningInfo
enPSSite
Volgende stappen
- Zie Aan de slag met PowerShell in Azure Stack Hub
- Installeer de PowerShell Az-module, zie PowerShell Az-module installeren voor Azure Stack Hub