Automatyczne migrowanie skryptów programu PowerShell z modułu AzureRM do Az programu PowerShell
W tym artykule dowiesz się, jak przeprowadzić automatyczne uaktualnienie skryptów programu PowerShell i modułów skryptów z modułu AzureRM do Az programu PowerShell za pomocą modułu Az.Tools.Migration programu PowerShell. Aby uzyskać dodatkowe opcje migracji, zobacz Migrowanie programu Azure PowerShell z modułu AzureRM do modułu Az.
Ostrzeżenie
Moduł AzureRM PowerShell został oficjalnie przestarzały od 29 lutego 2024 r. Zaleca się migrowanie użytkowników z modułu AzureRM do modułu Az programu PowerShell w celu zapewnienia ciągłej obsługi i aktualizacji.
Mimo że moduł AzureRM może nadal działać, nie jest już utrzymywany ani obsługiwany, umieszczając wszelkie dalsze zastosowania według uznania i ryzyka użytkownika. Zapoznaj się z naszymi zasobami migracji, aby uzyskać wskazówki dotyczące przejścia do modułu Az.
Wymagania
Zaktualizuj istniejące skrypty programu PowerShell do najnowszej wersji modułu AzureRM programu PowerShell (6.13.1).
Zainstaluj moduł Az.Tools.Migration programu PowerShell.
Install-Module -Name Az.Tools.Migration
Krok 1. Generowanie planu uaktualniania
Za pomocą polecenia cmdlet New-AzUpgradeModulePlan
wygeneruj plan uaktualniania służący do migrowania skryptów i modułów do modułu Az programu PowerShell. To polecenie cmdlet nie wprowadza żadnych zmian w istniejących skryptach. Użyj parametru FilePath
, aby wskazać określony skrypt jako docelowy, lub użyj parametru DirectoryPath
, aby wskazać wszystkie skrypty w określonym folderze jako docelowe.
Uwaga
Polecenie cmdlet New-AzUpgradeModulePlan
nie wykonuje planu, tylko generuje kroki uaktualniania.
Poniższy przykład generuje plan dla wszystkich skryptów w folderze C:\Scripts
. Został określony parametr OutVariable
, aby wyniki zostały zwrócone i jednocześnie zapisane w zmiennej o nazwie 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 pokazano w poniższych danych wyjściowych, plan uaktualniania określa plik i punkty przesunięcia, które wymagają zmian podczas przechodzenia z modułu AzureRM do poleceń cmdlet modułu Az programu 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
...
Przed uaktualnieniem należy wyświetlić wyniki planu, aby sprawdzić je pod kątem problemów. W poniższym przykładzie jest zwracana lista skryptów i elementów w tych skryptach, które uniemożliwią ich automatyczne uaktualnienie.
# Filter plan results to only warnings and errors
$Plan | Where-Object PlanResult -ne ReadyToUpgrade | Format-List
Elementy wyświetlane w poniższych danych wyjściowych nie zostaną automatycznie uaktualnione bez ręcznego rozwiązywania problemów.
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. Wykonanie uaktualnienia
Uwaga
Tej operacji nie można cofnąć. Zawsze upewnij się, że masz kopię zapasową skryptów i modułów programu PowerShell, które próbujesz uaktualnić.
Jeśli plan spełnia Twoje wymagania, przeprowadź uaktualnienie za pomocą polecenia cmdlet Invoke-AzUpgradeModulePlan
. Określ wartość SaveChangesToNewFiles
dla parametru FileEditMode
, aby zapobiec wprowadzeniu zmian w oryginalnych skryptach. W tym trybie uaktualnienie jest wykonywane przez utworzenie kopii każdego skryptu docelowego i dołączenie ciągu _az_upgraded
do nazw plików.
Ostrzeżenie
Polecenie cmdlet Invoke-AzUpgradeModulePlan
jest destrukcyjne, jeśli zostanie określona opcja -FileEditMode ModifyExistingFiles
! Modyfikuje ono skrypty i funkcje w miejscu zgodnie z planem uaktualniania modułu wygenerowanym przez polecenie cmdlet New-AzUpgradeModulePlan
. Można zamiast tego użyć opcji niedestrukcyjnej -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
...
W przypadku zwrócenia błędów można bliżej przyjrzeć się wynikom dla błędów za pomocą następującego polecenia:
# 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 :
Ograniczenia
- Operacje We/Wy na plikach używają domyślnego kodowania. Nietypowe kodowanie plików może powodować problemy.
- Polecenia cmdlet modułu AzureRM przekazane jako argumenty do pozornych instrukcji testu jednostkowego usługi Pester nie są wykrywane.
Jak zgłaszać problemy
Opinie i problemy dotyczące modułu Az.Tools.Migration programu PowerShell można zgłaszać za pośrednictwem problemu w usłudze GitHub w repozytorium azure-powershell-migration
.
Następne kroki
- Kroki migracji
- Automatyczne migrowanie skryptów programu PowerShell
- Wprowadzenie do modułu Az programu PowerShell
- Zmiany między modułem AzureRM i modułem Az
- Instalowanie modułu Az programu PowerShell
- Odinstalowywanie modułu AzureRM
Aby dowiedzieć się więcej o module Az programu PowerShell, zapoznaj się z dokumentacją programu Azure PowerShell