Migrowanie z modułu AzureRM do modułu Azure PowerShell Az w usłudze Azure Stack Hub
Moduł Az zapewnia równoważność funkcji z modułem AzureRM, jednak używa krótszych i bardziej spójnych nazw poleceń cmdlet. Skrypty napisane dla poleceń cmdlet modułu AzureRM nie będą automatycznie działać z nowym modułem. Aby ułatwić przejście, moduł Az oferuje narzędzia umożliwiające uruchamianie istniejących skryptów przy użyciu modułu AzureRM. Każda migracja do nowego zestawu poleceń jest kłopotliwa, jednak ten artykuł pomoże Ci rozpocząć przejście do nowego modułu.
Aby wyświetlić pełną listę zmian powodujących niezgodność między modułami AzureRM i Az, zobacz Przewodnik migracji modułu Az 1.0.0
Sprawdzanie pod kątem zainstalowanych wersji modułu AzureRM
Przed wykonaniem jakichkolwiek kroków związanych z migracją sprawdź, które wersje modułu AzureRM są zainstalowane w systemie. Dzięki temu możesz się upewnić, że skrypty są już uruchamiane w najnowszej wersji, i dowiedzieć, czy możesz włączyć aliasy poleceń bez odinstalowywania modułu AzureRM.
Aby sprawdzić, które wersje modułu AzureRM są zainstalowane, uruchom polecenie:
Get-InstalledModule -Name AzureRM -AllVersions
Sprawdzanie, czy bieżące skrypty działają z modułem AzureRM
To jest najważniejszy krok! Uruchom istniejące skrypty i upewnij się, że działają z najnowszą wersją modułu AzureRM (2.5.0). Jeśli Twoje skrypty nie działają, zapoznaj się z przewodnikiem po migracji modułu AzureRM.
Instalowanie modułu Az programu Azure PowerShell
Pierwszym krokiem jest zainstalowanie modułu Az na Twojej platformie. Po zainstalowaniu modułu Az zaleca się odinstalowanie modułu AzureRM. W poniższych krokach opisano, co zrobić, aby istniejące skrypty nadal działały, i jak włączyć zgodność ze starymi nazwami poleceń cmdlet.
Aby zainstalować moduł Az programu Azure PowerShell, wykonaj następujące kroki:
- Zalecane: Odinstaluj moduł AzureRM. Upewnij się, że usuwasz wszystkie zainstalowane wersje modułu AzureRM, a nie tylko najnowszą.
- Instalowanie modułu Az
Włączanie aliasów zapewniających zgodność z modułem AzureRM
Ważne
Tryb zgodności włącz tylko wtedy, gdy zostały odinstalowane wszystkie wersje modułu AzureRM. Włączenie trybu zgodności, gdy polecenia cmdlet modułu AzureRM są nadal dostępne, może spowodować nieprzewidywalne zachowanie. Pomiń ten krok, jeśli chcesz pozostawić zainstalowany moduł AzureRM, ale pamiętaj, że wszelkie polecenia cmdlet modułu AzureRM będą używać starszych modułów i nie będą wywoływać żadnych poleceń cmdlet modułu Az.
Po upewnieniu się, że skrypty działają z najnowszą wersją modułu AzureRM, i odinstalowaniu modułu AzureRM następny krok to włączenie trybu zgodności dla modułu Az. Zgodność należy włączyć za pomocą polecenia:
Enable-AzureRmAlias -Scope CurrentUser
Aliasy umożliwiają używanie starych nazw poleceń cmdlet po zainstalowaniu modułu Az. Te aliasy są wpisane w profil użytkownika dla wybranego zakresu. Jeśli profil użytkownika nie istnieje, jest on tworzony.
Ostrzeżenie
Dla tego polecenia możesz użyć innego parametru -Scope
, ale nie jest to zalecane. Aliasy są wpisane w profil użytkownika dla wybranego zakresu, dlatego włączaj je dla tak ograniczonego zakresu, jak to możliwe. Włączenie aliasów dla całego systemu może także spowodować problemy dla innych użytkowników, którzy mają zainstalowany moduł AzureRM w swoim zakresie lokalnym.
Po włączeniu trybu aliasów ponownie uruchom skrypty, aby potwierdzić, że nadal działają zgodnie z oczekiwaniami.
Zmienianie nazw modułów i poleceń cmdlet
Ogólnie rzecz biorąc, nazwy modułu zostały zmienione tak, aby nazwy AzureRM
i Azure
stały się nazwą Az
— to samo dotyczy poleceń cmdlet.
Na przykład nazwa modułu AzureRM.Compute
została zmieniona na Az.Compute
. Polecenie New-AzureRMVM
stało się poleceniem New-AzVM
, a polecenie Get-AzureStorageBlob
to teraz polecenie Get-AzStorageBlob
.
Istnieją wyjątki od tej reguły zmiany nazw, o których należy wiedzieć. Nazwy niektórych modułów zostały zmienione lub te moduły zostały scalone z istniejącymi modułami, przy czym nie miało to wpływu na sufiks ich poleceń cmdlet poza zmianą ciągu AzureRM
lub Azure
na Az
. W pozostałych przypadkach pełny sufiks polecenia cmdlet został zmieniony, aby odzwierciedlić nową nazwę modułu.
Moduł AzureRM | Moduł Az | Czy sufiks poleceń cmdlet uległ zmianie? |
---|---|---|
AzureRM.Profile | Az.Accounts | Tak |
AzureRM.Insights | Az.Monitor | Tak |
AzureRM.Tags | Az.Resources | Nie |
AzureRM.UsageAggregates | Az.Billing | Nie |
AzureRM.Consumption | Az.Billing | Nie |
Podsumowanie
Wykonując powyższe czynności, można zaktualizować wszystkie istniejące skrypty w celu korzystania z nowego modułu. Jeśli masz jakiekolwiek pytania lub problemy dotyczące tych kroków, które utrudniały migrację, dodaj komentarz do tego artykułu, abyśmy mogli ulepszyć instrukcje.
Zmiany powodujące niezgodność w module Az 1.0.0
Ten dokument zawiera szczegółowe informacje na temat różnic między modułem AzureRM w wersji 6.x i nowym modułem Az w wersji 1.x i nowszych. Spis treści pomoże przeprowadzić Cię przez pełną ścieżkę migracji, w tym zmiany specyficzne dla modułu, które mogą mieć wpływ na skrypty.
Ogólne zmiany powodujące niezgodność
W tej sekcji przedstawiono ogólne zmiany powodujące niezgodność wprowadzone w ramach przeprojektowania modułu Az.
Zmiany prefiksu noun polecenia cmdlet
W module AzureRM polecenia cmdlet używały ciągu AzureRM
lub Azure
jako prefiksu w postaci rzeczownika. Moduł Az upraszcza i normalizuje nazwy poleceń cmdlet, więc wszystkie polecenia cmdlet mają prefiks w postaci rzeczownika „Az”. Przykład:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Zmieniono na:
Get-AzVM
Get-AzKeyVaultSecret
Aby ułatwić przejście na te nowe nazwy poleceń cmdlet, moduł Az wprowadza dwa nowe polecenia cmdlet, Enable-AzureRmAlias i Disable-AzureRmAlias. Polecenie cmdlet Enable-AzureRmAlias
tworzy aliasy dla starszych nazw poleceń cmdlet w module AzureRM mapowane na nowsze nazwy poleceń cmdlet w module Az. Argument -Scope
polecenia cmdlet Enable-AzureRmAlias
pozwala wybrać, gdzie aliasy zostaną włączone.
Na przykład poniższy skrypt w module AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Może zostać uruchomiony tylko z niewielkimi zmianami, jeśli zostanie użyte polecenie cmdlet Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Uruchomienie polecenia cmdlet Enable-AzureRmAlias -Scope CurrentUser
spowoduje włączenie aliasów dla wszystkich otwieranych sesji programu PowerShell, więc po jego wykonaniu nie trzeba w ogóle zmieniać skryptów podobnych do poniższego:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Aby uzyskać szczegółowe informacje dotyczące użycia aliasów poleceń cmdlet, zobacz Dokumentacja polecenia cmdlet Enable-AzureRmAlias.
Gdy wszystko będzie gotowe do wyłączenia aliasów, możesz usunąć utworzone aliasy za pomocą polecenia cmdlet Disable-AzureRmAlias
. Aby uzyskać szczegółowe informacje, zobacz Dokumentacja polecenia cmdlet Disable-AzureRmAlias.
Ważne
Podczas wyłączania aliasów upewnij się, że zostaną one wyłączone dla wszystkich zakresów, w których je włączono.
Zmiany nazw modułów
Nazwy modułów zostały zmienione z AzureRM.*
na Az.*
, z wyjątkiem następujących modułów:
Moduł AzureRM | Moduł Az |
---|---|
Azure.Storage | Az.Storage |
Azure.AnalysisServices | Az.AnalysisServices |
AzureRM.Profile | Az.Accounts |
AzureRM.Insights | Az.Monitor |
AzureRM.RecoveryServices.Backup | Az.RecoveryServices |
AzureRM.RecoveryServices.SiteRecovery | Az.RecoveryServices |
AzureRM.Tags | Az.Resources |
AzureRM.MachineLearningCompute | Az.MachineLearning |
AzureRM.UsageAggregates | Az.Billing |
AzureRM.Consumption | Az.Billing |
Zmiany nazw modułów oznaczają, że każdy skrypt, który używa instrukcji #Requires
lub Import-Module
do ładowania określonych modułów, będzie trzeba zmienić tak, aby używał nowego modułu. Jeśli dla danego modułu sufiks polecenia cmdlet pozostał taki sam, oznacza to, że chociaż nazwa modułu się zmieniła, to sufiks wskazujący obszar operacji nie uległ zmianie.
Migrowanie instrukcji modułu wymaga i importowanie ich
Skrypty używające instrukcji #Requires
lub Import-Module
do deklarowania zależności od modułów AzureRM należy zaktualizować tak, aby używały nowych nazw modułów. Przykład:
#Requires -Module AzureRM.Compute
Należy zmienić na:
#Requires -Module Az.Compute
Instrukcję Import-Module
:
Import-Module -Name AzureRM.Compute
Należy zmienić na:
Import-Module -Name Az.Compute
Migrowanie w pełni kwalifikowanych wywołań poleceń cmdlet
Skrypty używające wywołań poleceń cmdlet kwalifikowanych za pomocą modułu, takie jak:
AzureRM.Compute\Get-AzureRmVM
Należy zmienić tak, aby używały nowych nazw modułów i poleceń cmdlet:
Az.Compute\Get-AzVM
Migrowanie zależności manifestu modułów
W przypadku modułów, w których zależności od modułów AzureRM są wyrażane za pomocą pliku manifestu modułów (psd1), należy zaktualizować nazwy modułów w sekcji RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Należy zmienić na:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Usunięte moduły
Następujące moduły zostały usunięte:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Narzędzia dla tych usług nie są już aktywnie wspierane. Zachęcamy klientów do jak najszybszego przechodzenia do alternatywnych usług.
Windows PowerShell 5.1 i .NET 4.7.2
Korzystanie z modułu Az w programie PowerShell 5.1 dla systemu Windows wymaga zainstalowania programu .NET Framework 4.7.2. Jeśli używasz programu PowerShell Core w wersji 6.x lub nowszej, program .NET Framework nie jest wymagany.
Tymczasowe usunięcie logowania użytkownika przy użyciu obiektu PSCredential
Ze względu na zmiany w przepływie uwierzytelniania dla platformy .NET Standard tymczasowo usuwamy możliwość logowania użytkownika za pomocą obiektu PSCredential. Ta możliwość zostanie ponownie udostępniona w wersji dla programu PowerShell 5.1 dla systemu Windows opublikowanej 15.01.2019. Ta kwestia została szczegółowo omówiona w ramach tego problemu w usłudze GitHub.
Domyślne logowanie za pomocą kodu urządzenia zamiast monitu przeglądarki internetowej
Ze względu na zmiany w przepływie uwierzytelniania dla platformy .NET Standard używamy logowania urządzenia jako domyślnego przepływu logowania podczas logowania interakcyjnego. Logowanie oparte na przeglądarce internetowej ponownie stanie się domyślne dla programu PowerShell 5.1 dla systemu Windows w wersji opublikowanej 15.01.2019. Użytkownicy będą wtedy mogli wybrać logowanie urządzenia za pomocą parametru przełącznika.
Zmiany powodujące niezgodność modułów
W tej sekcji szczegółowo opisano konkretne zmiany powodujące niezgodność w poszczególnych modułach i poleceniach cmdlet.
Az.ApiManagement (wcześniej AzureRM.ApiManagement)
- Usunięto następujące polecenia cmdlet:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Zamiast nich do ustawiania tych właściwości użyj polecenia cmdlet Set-AzApiManagement
- Usunięto następujące właściwości:
- Usunięto właściwości
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
iScmHostnameConfiguration
typuPsApiManagementHostnameConfiguration
z klasyPsApiManagementContext
. Zamiast nich używaj właściwościPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
iScmCustomHostnameConfiguration
typuPsApiManagementCustomHostNameConfiguration
. - Usunięto właściwość
StaticIPs
z klasy PsApiManagementContext. Właściwość została podzielona na właściwościPublicIPAddresses
iPrivateIPAddresses
. - Usunięto wymaganą właściwość
Location
z polecenia cmdlet New-AzureApiManagementVirtualNetwork.
- Usunięto właściwości
Az.Billing (wcześniej AzureRM.Billing, AzureRM.Consumption i AzureRM.UsageAggregates)
- Parametr
InvoiceName
został usunięty z polecenia cmdletGet-AzConsumptionUsageDetail
. W skryptach będzie trzeba używać innych parametrów tożsamości na potrzeby faktury.
Az.Compute (wcześniej AzureRM.Compute)
- Pole
IdentityIds
zostało usunięte z właściwościIdentity
w obiektachPSVirtualMachine
iPSVirtualMachineScaleSet
. Skrypty nie powinny już używać wartości tego pola do podejmowania decyzji dotyczących przetwarzania. - Typ właściwości
InstanceView
obiektuPSVirtualMachineScaleSetVM
został zmieniony zVirtualMachineInstanceView
naVirtualMachineScaleSetVMInstanceView
- Właściwości
AutoOSUpgradePolicy
iAutomaticOSUpgrade
zostały usunięte z właściwościUpgradePolicy
- Typ właściwości
Sku
w obiekciePSSnapshotUpdate
został zmieniony zDiskSku
naSnapshotSku
- Zestaw
VmScaleSetVMParameterSet
został usunięty z polecenia cmdletAdd-AzVMDataDisk
. Nie można już dodawać pojedynczego dysku danych do maszyny wirtualnej w zestawie skalowania.
Az.KeyVault (wcześniej AzureRM.KeyVault)
- Właściwość
PurgeDisabled
została usunięta z obiektówPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
iPSKeyVaultSecretAttributes
. Skrypty nie powinny już odwoływać się do właściwościPurgeDisabled
w celu podejmowania decyzji dotyczących przetwarzania.
Az.Monitor (wcześniej AzureRM.Insights)
Z polecenia cmdlet
Set-AzDiagnosticSetting
usunięto parametry o nazwach w liczbie mnogiejCategories
iTimegrains
, aby zastąpić je nazwami parametrów w liczbie pojedynczej. Skrypty używające koduSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Należy zmienić na
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (wcześniej AzureRM.Network)
- Usunięto przestarzały parametr
ResourceId
z polecenia cmdletGet-AzServiceEndpointPolicyDefinition
- Usunięto przestarzałą właściwość
EnableVmProtection
z obiektuPSVirtualNetwork
- Usunięto przestarzałe polecenie cmdlet
Set-AzVirtualNetworkGatewayVpnClientConfig
Skrypty nie powinny już podejmować decyzji dotyczących przetwarzania na podstawie wartości tych pól.
Az.Resources (wcześniej AzureRM.Resources)
Usunięto parametr
Sku
z polecenia cmdletNew/Set-AzPolicyAssignment
Usunięto parametr
Password
z poleceń cmdletNew-AzADServicePrincipal
iNew-AzADSpCredential
. Hasła są generowane automatycznie, a skrypty, które podawały hasło:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Należy zmienić tak, aby uzyskiwały hasło z danych wyjściowych:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (wcześniej Azure.Storage i AzureRM.Storage)
- Aby obsługiwać tworzenie kontekstu magazynu OAuth za pomocą tylko nazwy konta magazynu, domyślny zestaw parametrów został zmieniony na
OAuthParameterSet
- Przykład:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Przykład:
- Parametr
Location
stał się obowiązkowy w poleceniu cmdletGet-AzStorageUsage
- Metody interfejsu API magazynu używają teraz wzorca asynchronicznego opartego na zadaniach zamiast synchronicznych wywołań interfejsu API. W poniższych przykładach pokazano nowe polecenia asynchroniczne:
Migawka obiektu blob
AzureRM:
$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$b.ICloudBlob.Snapshot()
Az:
$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$task = $b.ICloudBlob.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result
Udostępnianie migawki
AzureRM:
$Share = Get-AzureStorageShare -Name $containerName -Context $ctx
$snapshot = $Share.Snapshot()
Az:
$Share = Get-AzStorageShare -Name $containerName -Context $ctx
$task = $Share.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result
Cofanie usunięcia nietrwale usuniętego obiektu blob
AzureRM:
$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$b.ICloudBlob.Undelete()
Az:
$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$task = $b.ICloudBlob.UndeleteAsync()
$task.Wait()
Ustawianie warstwy obiektu blob
AzureRM:
$blockBlob = Get-AzureStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$blockBlob.ICloudBlob.SetStandardBlobTier("hot")
$pageBlob = Get-AzureStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$pageBlob.ICloudBlob.SetPremiumBlobTier("P4")
Az:
$blockBlob = Get-AzStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$task = $blockBlob.ICloudBlob.SetStandardBlobTierAsync("hot")
$task.Wait()
$pageBlob = Get-AzStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$task = $pageBlob.ICloudBlob.SetPremiumBlobTierAsync("P4")
$task.Wait()
Az.Websites (wcześniej AzureRM.Websites)
- Usunięto przestarzałe właściwości z obiektów
PSAppServicePlan
,PSCertificate
,PSCloningInfo
iPSSite
Następne kroki
- Dowiedz się więcej o programie PowerShell w usłudze Azure Stack Hub, zobacz Rozpoczynanie pracy z programem PowerShell w usłudze Azure Stack Hub
- Instalowanie modułu Az programu PowerShell, zobacz Instalowanie modułu Az programu PowerShell dla usługi Azure Stack Hub