Quickstart: 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.

Belangrijk

Omdat Az PowerShell-modules nu alle mogelijkheden van AzureRM PowerShell-modules hebben en meer, wordt AzureRM PowerShell-modules op 29 februari 2024 buiten gebruik gesteld.

Als u serviceonderbrekingen wilt voorkomen, moet u uw scripts bijwerken die gebruikmaken van AzureRM PowerShell-modules voor het gebruik van Az PowerShell-modules op 29 februari 2024. Volg de snelstartgids om uw scripts automatisch bij te werken.

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 5.2.0 -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 worden weergegeven in de volgende uitvoer, worden niet automatisch geüpgraded zonder de problemen eerst handmatig op te lossen.

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

Waarschuwing

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 is 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.
  • Op dit moment wordt alleen de Az-module voor PowerShell met versie 5.2.0 ondersteund als doel.

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