Dela via


Migrera PowerShell-skript automatiskt från AzureRM till Az PowerShell-modulen

I den här artikeln får du lära dig hur du använder PowerShell-modulen Az.Tools.Migration för att automatiskt uppgradera dina PowerShell-skript och skriptmoduler från AzureRM till Az PowerShell-modulen. Fler migreringsalternativ finns i Migrera Azure PowerShell från AzureRM till Az.

Varning

AzureRM PowerShell-modulen har officiellt avvecklats från och med den 29 februari 2024. Användare rekommenderas att migrera från AzureRM till Az PowerShell-modulen för att säkerställa fortsatt support och uppdateringar.

Även om AzureRM-modulen kanske fortfarande fungerar, underhålls eller stöds den inte längre, vilket innebär att fortsatt användning sker på användarens eget ansvar och risk. Se våra migreringsresurser för vägledning om övergången till Az-modulen.

Kravspecifikation

  • Uppdatera dina befintliga PowerShell-skript till den senaste versionen av AzureRM PowerShell-modulen (6.13.1).

  • Installera modulen Az.Tools.Migration för PowerShell.

    Install-Module -Name Az.Tools.Migration
    

Steg 1: Generera en uppgraderingsplan

Med cmdleten New-AzUpgradeModulePlan skapar du en uppgraderingsplan för att migrera dina skript och moduler till Az PowerShell-modulen. Den här cmdleten gör inga ändringar i dina befintliga skript. Använd parametern FilePath för att rikta in dig på ett visst skript eller parametern DirectoryPath för att rikta in dig på alla skript i en specifik mapp.

Anmärkning

Cmdleten New-AzUpgradeModulePlan kör inte planen. Den genererar bara uppgraderingsstegen.

I följande exempel genereras en plan för alla skript i mappen C:\Scripts. OutVariable-parametern anges så att resultaten returneras och lagras samtidigt i en variabel med namnet 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

Som du ser i följande utdata specificerar uppgraderingsplanen den specifika filen och de offsetpunkter som behöver ändras vid flytten från AzureRM till Az PowerShell-cmdletarna.

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

Innan du utför uppgraderingen måste du granska planens resultat för eventuella problem. I följande exempel returneras en lista över skript och objekt i skripten som förhindrar att de uppgraderas automatiskt.

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

Objekten som visas i följande utdata uppgraderas inte automatiskt utan att problemen åtgärdas manuellt först.

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            :

Steg 2: Utför uppgraderingen

Försiktighet

Det finns ingen ångra-åtgärd. Se alltid till att du har en säkerhetskopia av dina PowerShell-skript och moduler som du försöker uppgradera.

När du är nöjd med planen utförs uppgraderingen med cmdleten Invoke-AzUpgradeModulePlan. Ange SaveChangesToNewFiles för parametervärdet FileEditMode för att förhindra att ändringar görs i dina ursprungliga skript. När du använder det här läget utförs uppgraderingen genom att skapa en kopia av varje inriktat skript med _az_upgraded i filnamnet.

Varning

Cmdleten Invoke-AzUpgradeModulePlan är destruktiv när alternativet -FileEditMode ModifyExistingFiles har angetts! Den ändrar dina skript och funktioner på plats enligt moduluppgraderingsplanen som genereras av New-AzUpgradeModulePlan-cmdleten. Som icke-destruktivt alternativ anger du i stället -FileEditMode SaveChangesToNewFiles.

# 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
...

Om några fel returneras kan du titta närmare på felresultatet med följande kommando:

# 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            :

Begränsningar

  • Fil-I/O-åtgärder använder standardkodning. Ovanliga filkodningssituationer kan orsaka problem.
  • AzureRM-cmdletar identifieras inte när de skickas som argument till mock-uttalanden för Pester-enhetstest.

Så här rapporterar du problem

Du kan ge feedback och rapportera problem med PowerShell-modulen Az.Tools.Migration via ett GitHub-ärende på lagringsplatsen azure-powershell-migration.

Nästa steg

Du kan läsa mer om Azure PowerShell-modulen i Azure PowerShell-dokumentationen