Automatická migrace skriptů PowerShellu z AzureRM na modul Az PowerShell
V tomto článku se naučíte, jak pomocí modulu Az.Tools.Migration PowerShellu automaticky upgradovat skripty a skriptovací moduly PowerShellu z AzureRM na modul Az PowerShell. Další možnosti migrace najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Upozorňující
Modul AzureRM PowerShell je od 29. února 2024 oficiálně zastaralý. Uživatelům se doporučuje migrovat z AzureRM do modulu Az PowerShell, aby se zajistila nepřetržitá podpora a aktualizace.
I když může modul AzureRM stále fungovat, už se neudržuje ani nepodporuje, přičemž jakékoli další použití se bude umisťovat podle vlastního uvážení a rizika uživatele. Pokyny k přechodu na modul Az najdete v našich zdrojích informací o migraci.
Požadavky
Aktualizujte stávající skripty PowerShellu na nejnovější verzi modulu AzureRM PowerShell (6.13.1).
Nainstalujte modul Az.Tools.Migration PowerShellu.
Install-Module -Name Az.Tools.Migration
Krok 1: Vygenerování plánu upgradu
Pomocí rutiny New-AzUpgradeModulePlan
vygenerujete plán upgradu pro migraci skriptů a modulů na modul Az PowerShell. Tato rutina neprovádí žádné změny ve vašich stávajících skriptech. Použijte parametr FilePath
pro určení konkrétního skriptu nebo parametr DirectoryPath
pro určení všech skriptů v konkrétní složce.
Poznámka:
Rutina New-AzUpgradeModulePlan
plán nespustí, pouze vygeneruje kroky upgradu.
Následující příklad vygeneruje plán pro všechny skripty ve složce C:\Scripts
. Je zadán parametr OutVariable
, takže výsledky se vrátí a současně uloží do proměnné s názvem 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
Jak je znázorněno na následujícím výstupu, plán upgradu podrobně popisuje konkrétní soubory a místa v nich, která při přechodu z rutin AzureRM na Az PowerShell vyžadují změny.
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
...
Před provedením upgradu je potřeba se podívat na problémy ve výsledcích plánu. Následující příklad vrátí seznam skriptů a položek v těchto skriptech, které zabrání jejich automatickému upgradu.
# Filter plan results to only warnings and errors
$Plan | Where-Object PlanResult -ne ReadyToUpgrade | Format-List
Položky zobrazené v následujícím výstupu se neupgradují automaticky, aniž by nejprve opravovaly problémy ručně.
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 :
Krok 2: Provedení upgradu
Upozornění
Neexistuje žádná operace vrácení zpět. Vždy zajistěte, abyste měli záložní kopii skriptů a modulů PowerShellu, které se pokoušíte upgradovat.
Až budete s plánem spokojeni, upgrade se provede pomocí rutiny Invoke-AzUpgradeModulePlan
. Jako hodnotu parametru FileEditMode
zadejte SaveChangesToNewFiles
, abyste zabránili provedení změn v původních skriptech. Při použití tohoto režimu se upgrade provede tak, že se vytvoří kopie každého cílového skriptu a k názvu souboru se připojí _az_upgraded
.
Upozorňující
Pokud je zadaná možnost -FileEditMode ModifyExistingFiles
, je rutina Invoke-AzUpgradeModulePlan
destruktivní. Změní vaše skripty a funkce na místě v souladu s plánem upgradu modulu generovaného rutinou New-AzUpgradeModulePlan
. Požadujete-li nedestruktivní upgrade, zadejte místo toho možnost -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
...
Pokud se vrátí nějaké chyby, můžete se podívat na chybové výsledky pomocí následujícího příkazu:
# 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 :
Omezení
- Vstupně-výstupní operace se soubory používají výchozí kódování. Situace s neobvyklým kódováním souborů můžou způsobovat problémy.
- Rutiny AzureRM předané jako argumenty cvičným příkazům testu jednotek Pester nejsou zjištěny.
Hlášení problémů
Nahlaste zpětnou vazbu a problémy týkající se modulu Az.Tools.Migration PowerShellu pomocí problému GitHubu v úložišti azure-powershell-migration
.
Další kroky
- Kroky migrace
- Automatická migrace skriptů PowerShellu
- Představujeme modul Az PowerShellu
- Změny mezi AzureRM a Az
- Instalace modulu Az PowerShell
- Odinstalace AzureRM
Další informace o modulu Az PowerShell najdete v dokumentaci k Azure PowerShellu.
Azure PowerShell