PowerShell-scripts automatisch migreren van AzureRM naar de Az-module voor PowerShell

In dit artikel leert u hoe u de PowerShell-module Az.Tools.Migration kunt gebruiken om uw PowerShell-scripts en -scriptmodules automatisch te upgraden van AzureRM naar de Az-module voor PowerShell. Raadpleeg Azure PowerShell migreren van AzureRM naar Az voor aanvullende migratieopties.

Waarschuwing

De AzureRM PowerShell-module is vanaf 29 februari 2024 officieel afgeschaft. Gebruikers wordt aangeraden om van AzureRM naar de Az PowerShell-module te migreren om ondersteuning en updates te garanderen.

Hoewel de AzureRM-module nog steeds kan functioneren, wordt deze niet meer onderhouden of ondersteund, waardoor het gebruik naar eigen goeddunken en risico van de gebruiker blijft bestaan. Raadpleeg onze migratiebronnen voor hulp bij de overgang naar de Az-module.

Vereisten

  • Werk uw bestaande PowerShell-scripts bij naar de nieuwste versie van de AzureRM PowerShell-module (6.13.1).

  • Installeer de PowerShell-module AZ.Tools.Migration.

    Install-Module -Name Az.Tools.Migration
    

Stap 1: Een upgradeplan genereren

U gebruikt de cmdlet New-AzUpgradeModulePlan om een upgradeplan te genereren voor het migreren van uw scripts en modules naar de Az-module voor PowerShell. Met deze cmdlet worden geen wijzigingen aangebracht in uw bestaande scripts. Gebruik de parameter FilePath als u een specifiek script wilt gebruiken als doel of de parameter DirectoryPath als u alle scripts in een specifieke map wilt gebruiken als doel.

Notitie

Met de cmdlet New-AzUpgradeModulePlan wordt het plan niet uitgevoerd, maar worden alleen de upgradestappen gegenereerd.

In het volgende voorbeeld wordt een plan gegenereerd voor alle scripts in de map C:\Scripts. De parameter OutVariable is opgegeven, zodat de resultaten worden geretourneerd en tegelijkertijd worden opgeslagen in een variabele met de naam Plan.

# Generate an upgrade plan for all the scripts and module files in the specified folder and save it to a variable.
New-AzUpgradeModulePlan -FromAzureRmVersion 6.13.1 -ToAzVersion latest -DirectoryPath 'C:\Scripts' -OutVariable Plan

Zoals u ziet in de volgende uitvoer, beschrijft het upgradeplan de specifieke bestands- en offsetpunten die moeten worden gewijzigd wanneer u overstapt van AzureRM naar de Az-cmdlets voor PowerShell.

Order Location                                                   UpgradeType     PlanResult             Original
----- --------                                                   -----------     ----------             --------
1     compute-create-dockerhost.ps1:59:24                        CmdletParameter ReadyToUpgrade         ExtensionName
2     compute-create-dockerhost.ps1:59:1                         Cmdlet          ReadyToUpgrade         Set-AzureRmVM...
3     compute-create-dockerhost.ps1:54:1                         Cmdlet          ReadyToUpgrade         New-AzureRmVM
4     compute-create-dockerhost.ps1:51:1                         Cmdlet          ReadyToUpgrade         Add-AzureRmVM...
5     compute-create-dockerhost.ps1:47:1                         Cmdlet          ReadyToUpgrade         Add-AzureRmVM...
6     compute-create-dockerhost.ps1:46:1                         Cmdlet          ReadyToUpgrade         Set-AzureRmVM...
7     compute-create-dockerhost.ps1:45:1                         Cmdlet          ReadyToUpgrade         Set-AzureRmVM...
8     compute-create-dockerhost.ps1:44:13                        Cmdlet          ReadyToUpgrade         New-AzureRmVM...
9     compute-create-dockerhost.ps1:40:8                         Cmdlet          ReadyToUpgrade         New-AzureRmNe...
10    compute-create-dockerhost.ps1:36:8                         Cmdlet          ReadyToUpgrade         New-AzureRmNe...
11    compute-create-dockerhost.ps1:31:16                        Cmdlet          ReadyToUpgrade         New-AzureRmNe...
12    compute-create-dockerhost.ps1:26:15                        Cmdlet          ReadyToUpgrade         New-AzureRmNe...
13    compute-create-dockerhost.ps1:22:8                         Cmdlet          ReadyToUpgrade         New-AzureRmPu...
14    compute-create-dockerhost.ps1:18:9                         Cmdlet          ReadyToUpgrade         New-AzureRmVi...
15    compute-create-dockerhost.ps1:15:17                        Cmdlet          ReadyToUpgrade         New-AzureRmVi...
16    compute-create-dockerhost.ps1:12:1                         Cmdlet          ReadyToUpgrade         New-AzureRmRe...
17    compute-create-windowsvm-quick.ps1:18:3                    CmdletParameter ReadyToUpgrade         ImageName
18    compute-create-windowsvm-quick.ps1:14:1                    Cmdlet          ReadyToUpgrade         New-AzureRmVM
19    compute-create-windowsvm-quick.ps1:11:1                    Cmdlet          ReadyToUpgrade         New-AzureRmRe...
20    compute-create-wordpress-mysql.ps1:59:24                   CmdletParameter ReadyToUpgrade         ExtensionName
...

Voordat u de upgrade uitvoert, moet u de resultaten van het plan controleren op problemen. In het volgende voorbeeld wordt een lijst met scripts en de items in die scripts geretourneerd die voorkomen dat deze automatisch worden bijgewerkt.

# Filter plan results to only warnings and errors
$Plan | Where-Object PlanResult -ne ReadyToUpgrade | Format-List

De items die in de volgende uitvoer worden weergegeven, worden niet automatisch bijgewerkt zonder eerst de problemen handmatig te corrigeren.

Order                  : 42
UpgradeType            : CmdletParameter
PlanResult             : ErrorParameterNotFound
PlanSeverity           : Error
PlanResultReason       : Parameter was not found in Get-AzResource or it's aliases.
SourceCommand          : CommandReference
SourceCommandParameter : CommandReferenceParameter
Location               : devtestlab-add-marketplace-image-to-lab.ps1:14:74
FullPath               : C:\Scripts\devtestlab-add-marketplace-image-to-lab.ps1
StartOffset            : 556
Original               : ResourceNameEquals
Replacement            :

Stap 2: de upgrade uitvoeren

Let op

Er is geen bewerking voor ongedaan maken. Zorg er altijd voor dat u een back-up hebt van de PowerShell-scripts en -modules die u wilt bijwerken.

Als u tevreden bent met het plan, wordt de upgrade uitgevoerd met de cmdlet Invoke-AzUpgradeModulePlan. Geef SaveChangesToNewFiles op als waarde voor de parameter FileEditMode om te voorkomen dat er wijzigingen in de oorspronkelijke scripts worden aangebracht. Wanneer u deze modus gebruikt, wordt de upgrade uitgevoerd door een kopie te maken van elk doelscript waarvoor _az_upgraded is toegevoegd aan de bestandsnaam.

Waarschuwing

De cmdlet Invoke-AzUpgradeModulePlan is destructief wanneer de optie -FileEditMode ModifyExistingFiles wordt opgegeven. Het wijzigt uw scripts en functies op basis van het module-upgradeplan dat is gegenereerd door de cmdlet New-AzUpgradeModulePlan. Geef voor de niet-destructieve optie -FileEditMode SaveChangesToNewFiles op.

# Execute the automatic upgrade plan and save the results to a variable.
Invoke-AzUpgradeModulePlan -Plan $Plan -FileEditMode SaveChangesToNewFiles -OutVariable Results
Order Location                                                   UpgradeType     UpgradeResult    Original
----- --------                                                   -----------     -------------    --------
1     compute-create-dockerhost.ps1:59:24                        CmdletParameter UpgradeCompleted ExtensionName
2     compute-create-dockerhost.ps1:59:1                         Cmdlet          UpgradeCompleted Set-AzureRmVMExtens...
3     compute-create-dockerhost.ps1:54:1                         Cmdlet          UpgradeCompleted New-AzureRmVM
4     compute-create-dockerhost.ps1:51:1                         Cmdlet          UpgradeCompleted Add-AzureRmVMSshPub...
5     compute-create-dockerhost.ps1:47:1                         Cmdlet          UpgradeCompleted Add-AzureRmVMNetwor...
6     compute-create-dockerhost.ps1:46:1                         Cmdlet          UpgradeCompleted Set-AzureRmVMSource...
7     compute-create-dockerhost.ps1:45:1                         Cmdlet          UpgradeCompleted Set-AzureRmVMOperat...
8     compute-create-dockerhost.ps1:44:13                        Cmdlet          UpgradeCompleted New-AzureRmVMConfig
9     compute-create-dockerhost.ps1:40:8                         Cmdlet          UpgradeCompleted New-AzureRmNetworkI...
10    compute-create-dockerhost.ps1:36:8                         Cmdlet          UpgradeCompleted New-AzureRmNetworkS...
11    compute-create-dockerhost.ps1:31:16                        Cmdlet          UpgradeCompleted New-AzureRmNetworkS...
12    compute-create-dockerhost.ps1:26:15                        Cmdlet          UpgradeCompleted New-AzureRmNetworkS...
13    compute-create-dockerhost.ps1:22:8                         Cmdlet          UpgradeCompleted New-AzureRmPublicIp...
14    compute-create-dockerhost.ps1:18:9                         Cmdlet          UpgradeCompleted New-AzureRmVirtualN...
15    compute-create-dockerhost.ps1:15:17                        Cmdlet          UpgradeCompleted New-AzureRmVirtualN...
16    compute-create-dockerhost.ps1:12:1                         Cmdlet          UpgradeCompleted New-AzureRmResource...
17    compute-create-windowsvm-quick.ps1:18:3                    CmdletParameter UpgradeCompleted ImageName
18    compute-create-windowsvm-quick.ps1:14:1                    Cmdlet          UpgradeCompleted New-AzureRmVM
19    compute-create-windowsvm-quick.ps1:11:1                    Cmdlet          UpgradeCompleted New-AzureRmResource...
20    compute-create-wordpress-mysql.ps1:59:24                   CmdletParameter UpgradeCompleted ExtensionName
...

Als er fouten worden geretourneerd, kunt u de foutresultaten nader bekijken door de volgende opdracht uit te voeren:

# Filter results to show only errors
$Results | Where-Object UpgradeResult -ne UpgradeCompleted | Format-List
Order                  : 42
UpgradeType            : CmdletParameter
UpgradeResult          : UnableToUpgrade
UpgradeSeverity        : Error
UpgradeResultReason    : Parameter was not found in Get-AzResource or it's aliases.
SourceCommand          : CommandReference
SourceCommandParameter : CommandReferenceParameter
Location               : devtestlab-add-marketplace-image-to-lab.ps1:14:74
FullPath               : C:\Scripts\devtestlab-add-marketplace-image-to-lab.ps1
StartOffset            : 556
Original               : ResourceNameEquals
Replacement            :

Beperkingen

  • I/O-bewerkingen voor bestanden gebruiken standaardcodering. Situaties met ongebruikelijke bestandscoderings kunnen problemen veroorzaken.
  • AzureRM-cmdlets die worden doorgegeven als argumenten voor testinstructeis voor Pester-eenheidstests worden niet gedetecteerd.

Problemen melden

Meld feedback en problemen met de PowerShell-module Az.Tools.Migration via een GitHub-probleem in de opslagplaats azure-powershell-migration.

Volgende stappen

Raadpleeg de documentatie van Azure PowerShell voor meer informatie over de Az-module voor PowerShell