Migrowanie z modułu AzureRM do modułu Az programu Azure PowerShell w usłudze Azure Stack Hub
Moduł Az ma równoważność funkcji z modułem AzureRM, ale 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, Az oferuje narzędzia, które pozwalają na uruchamianie Twoich istniejących skryptów przy użyciu AzureRM. Migracja do nowego zestawu poleceń nigdy nie jest wygodna, ale ten artykuł pomoże Ci rozpocząć przechodzenie do nowego modułu.
Aby wyświetlić pełną listę zmian powodujących niezgodność między AzureRM a Az, zapoznaj się z przewodnikiem migracji dla Az 1.0.0
Sprawdzanie zainstalowanych wersji modułu AzureRM
Przed wykonaniem jakichkolwiek kroków migracji sprawdź, które wersje modułu AzureRM są zainstalowane w systemie. Dzięki temu można upewnić się, że skrypty są już uruchomione w najnowszej wersji, i poinformuje Cię, czy można włączyć aliasy poleceń bez odinstalowywania AzureRM.
Aby sprawdzić, które wersje modułu AzureRM zostały zainstalowane, uruchom polecenie:
Get-InstalledModule -Name AzureRM -AllVersions
Sprawdź, czy bieżące skrypty działają z modułem AzureRM
Jest to najważniejszy krok! Uruchom istniejące skrypty i upewnij się, że współpracują one z najnowsz ą wersją modułu AzureRM (2.5.0). Jeśli skrypty nie działają, zapoznaj się z przewodnikiem migracji AzureRM.
Instalowanie modułu Az programu Azure PowerShell
Pierwszym krokiem jest zainstalowanie modułu Az na platformie. Podczas instalowania modułu Az zaleca się odinstalowanie modułu AzureRM. W poniższych krokach dowiesz się, jak nadal uruchamiać istniejące skrypty i włączyć zgodność starych nazw poleceń cmdlet.
Aby zainstalować moduł Az programu Azure PowerShell, wykonaj następujące kroki:
- Zalecane: Odinstaluj moduł AzureRM. Upewnij się, że usunięto wszystkie zainstalowane wersje AzureRM, a nie tylko tę najnowszą.
- Instalowanie modułu Az
Włączanie aliasów zgodności modułu AzureRM
Ważny
Włącz tryb zgodności tylko jeśli odinstalowałeś(-aś) 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 zdecydujesz się zachować zainstalowany moduł AzureRM, ale należy pamiętać, że wszystkie polecenia cmdlet modułu AzureRM będą używać starszych modułów i nie wywoływać żadnych poleceń cmdlet Az.
Po odinstalowaniu modułu AzureRM i pracy skryptów z najnowszą wersją modułu AzureRM następnym krokiem jest włączenie trybu zgodności dla modułu Az. Zgodność jest włączona za pomocą polecenia :
Enable-AzureRmAlias -Scope CurrentUser
Aliasy umożliwiają używanie starych nazw poleceń cmdlet w przypadku zainstalowania modułu Az. Te aliasy są zapisywane w profilu użytkownika dla wybranego zakresu. Jeśli profil użytkownika nie istnieje, zostanie utworzony.
Ostrzeżenie
Dla tego polecenia można użyć innego -Scope
, ale nie jest to zalecane. Aliasy są zapisywane w profilu użytkownika dla wybranego zakresu, dlatego należy ograniczyć ich zakres do minimum. Włączenie aliasów dla całego systemu może również powodować problemy z innymi użytkownikami, którzy mają zainstalowany moduł AzureRM w swoim zakresie lokalnym.
Po włączeniu trybu aliasu ponownie uruchom skrypty, aby potwierdzić, że nadal działają zgodnie z oczekiwaniami.
Zmienianie nazw modułów i cmdletów
Ogólnie rzecz biorąc, nazwy modułów zostały zmienione tak, że zarówno AzureRM
, jak i Azure
stały się Az
, i to samo dotyczy poleceń cmdlet.
Na przykład nazwa modułu AzureRM.Compute
została zmieniona na Az.Compute
.
New-AzureRMVM
stał się New-AzVM
, a Get-AzureStorageBlob
jest teraz Get-AzStorageBlob
.
Istnieją wyjątki od tej zmiany nazewnictwa, o których należy pamiętać. Niektóre moduły zostały przemianowane lub scalone z istniejącymi modułami bez wpływu na sufiks ich poleceń cmdlet, z wyjątkiem zmiany AzureRM
lub Azure
na Az
. W przeciwnym razie sufiks pełnego polecenia cmdlet został zmieniony, aby odzwierciedlić nową nazwę modułu.
Moduł AzureRM | Moduł Az | Zmieniono sufiks polecenia cmdlet? |
---|---|---|
AzureRM.Profile | Az.Accounts | Tak |
AzureRM.Insights | Az.Monitor | Tak |
AzureRM.Tags | Az.Resources | Nie |
AzureRM.UsageAggregates | Az.Billing | Nie |
AzureRM.Consumption | Az.Fakturowanie | Nie |
Streszczenie
Wykonując te kroki, możesz zaktualizować wszystkie istniejące skrypty, aby użyć nowego modułu. Jeśli masz pytania lub problemy z tymi krokami, które utrudniły migrację, skomentuj ten artykuł, abyśmy mogli ulepszyć instrukcje.
Zmiany powodujące niezgodność dla modułu Az 1.0.0
Ten dokument zawiera szczegółowe informacje na temat zmian między modułem AzureRM 6.x i nowym modułem Az w wersji 1.x lub nowszej. Spis treści pomoże Ci przejść przez pełną ścieżkę migracji, w tym zmiany specyficzne dla modułu, które mogą mieć wpływ na skrypty.
Ogólne istotne zmiany
W tej sekcji opisano ogólne zmiany powodujące niezgodność, które są częścią przeprojektowania modułu Az.
Zmiany prefiksu rzeczownika polecenia cmdlet
W module AzureRM polecenia cmdlet używały jako przedrostka rzeczownikowego AzureRM
lub Azure
. Moduł Az upraszcza i normalizuje nazwy cmdlet, dzięki czemu wszystkie cmdlety używają "Az" jako prefiksu rzeczownikowego cmdlet. Na przykład:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Zmieniono na:
Get-AzVM
Get-AzKeyVaultSecret
Aby ułatwić przejście do tych nowych nazw poleceń cmdlet, Az wprowadza dwa nowe polecenia cmdlet, Enable-AzureRmAlias i Disable-AzureRmAlias.
Enable-AzureRmAlias
tworzy aliasy starszych nazw cmdlet w module AzureRM, które następnie mapuje na nowsze nazwy cmdlet Az. Użycie argumentu -Scope
z Enable-AzureRmAlias
pozwala wybrać, gdzie są włączone aliasy.
Na przykład następujący skrypt w module AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Można uruchomić z minimalnymi zmianami przy użyciu Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Uruchomienie Enable-AzureRmAlias -Scope CurrentUser
spowoduje włączenie aliasów dla wszystkich sesji PowerShell, które otworzysz, więc po wykonaniu tego cmdletu taki skrypt nie będzie wymagał żadnych zmian.
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Aby uzyskać szczegółowe informacje na temat użycia aliasów cmdletów, zobacz Enable-AzureRmAlias odwołanie.
Gdy wszystko będzie gotowe do wyłączenia aliasów, Disable-AzureRmAlias
usuwa utworzone aliasy. Aby uzyskać szczegółowe informacje, zobacz Disable-AzureRmAlias reference.
Ważny
Podczas wyłączania aliasów upewnij się, że są one wyłączone dla wszystkich zakresów, w których aliasy były włączone.
Zmiany nazwy modułu
Nazwy modułów zmieniły się 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 w nazwach modułów oznaczają, że każdy skrypt używający #Requires
lub Import-Module
do ładowania określonych modułów będzie musiał zostać zmieniony, aby zamiast tego używał nowego modułu. W przypadku modułów, w których sufiks polecenia cmdlet nie uległ zmianie, oznacza to, że chociaż nazwa modułu się zmieniła, sufiks wskazujący na przestrzeń operacyjną to , a nie.
Migracja wymaga poleceń modułu i ich importowania
Skrypty używające #Requires
lub Import-Module
do deklarowania zależności od modułów AzureRM muszą zostać zaktualizowane w celu używania nowych nazw modułów. Na przykład:
#Requires -Module AzureRM.Compute
Należy zmienić na:
#Requires -Module Az.Compute
Dla Import-Module
:
Import-Module -Name AzureRM.Compute
Należy zmienić na:
Import-Module -Name Az.Compute
Migrowanie w pełni kwalifikowanych wywołań cmdlet
Skrypty korzystające z wywołań poleceń cmdlet kwalifikowanych przez moduł, takich jak:
AzureRM.Compute\Get-AzureRmVM
Należy zmienić, aby używać nowych nazw modułów i poleceń cmdlet:
Az.Compute\Get-AzVM
Migrowanie zależności manifestu modułu
Moduły, które wyrażają zależności od modułów AzureRM za pośrednictwem pliku manifestu modułu (psd1), będą musiał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
Usunięto następujące moduły:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Narzędzia dla tych usług nie są już aktywnie obsługiwane. Klienci są zachęcani do przejścia do alternatywnych usług, gdy tylko jest to wygodne.
Windows PowerShell 5.1 i .NET 4.7.2
Użycie modułu Az z programem PowerShell 5.1 dla systemu Windows wymaga zainstalowania programu .NET Framework 4.7.2. Korzystanie z programu PowerShell Core 6.x lub nowszego nie wymaga programu .NET Framework.
Tymczasowe usunięcie logowania użytkownika przy użyciu PSCredential
Ze względu na zmiany w przepływie uwierzytelniania dla platformy .NET Standard tymczasowo usuwamy logowanie użytkownika za pośrednictwem programu PSCredential. Ta funkcja zostanie ponownie wprowadzona w wersji 1.15.2019 dla programu PowerShell 5.1 dla systemu Windows. Omówiono to szczegółowo w tym zgłoszeniu na GitHubie.
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 przez przeglądarkę internetową zostanie ponownie wprowadzone dla programu PowerShell 5.1 dla systemu Windows jako domyślne w wersji 15.01.2019. W tym czasie użytkownicy będą mogli wybrać logowanie urządzenia przy użyciu parametru Switch.
Zmiany łamiące zgodność modułów
Ta sekcja zawiera szczegółowe informacje o zmianach powodujących niezgodność dla poszczególnych modułów i poleceń cmdlet.
Az.ApiManagement (wcześniej AzureRM.ApiManagement)
- Usunięto następujące polecenia cmdlet:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Użyj polecenia cmdlet Set-AzApiManagement, aby ustawić te właściwości
- Usunięto następujące właściwości:
- Usunięto właściwości
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
iScmHostnameConfiguration
typuPsApiManagementHostnameConfiguration
zPsApiManagementContext
. Zamiast tego należy użyćPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
iScmCustomHostnameConfiguration
typuPsApiManagementCustomHostNameConfiguration
. - Usunięto właściwość
StaticIPs
z PsApiManagementContext. Właściwość została podzielona naPublicIPAddresses
iPrivateIPAddresses
. - Z polecenia cmdlet New-AzureApiManagementVirtualNetwork usunięto wymaganą właściwość
Location
.
- 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
. Skrypty będą musiały używać innych parametrów tożsamości dla faktury.
Az.Compute (wcześniej AzureRM.Compute)
-
IdentityIds
są usuwane z właściwościIdentity
w obiektachPSVirtualMachine
iPSVirtualMachineScaleSet
, a skrypty nie powinny już używać wartości tego pola do podejmowania decyzji dotyczących przetwarzania. - Typ właściwości
InstanceView
obiektuPSVirtualMachineScaleSetVM
jest zmieniany zVirtualMachineInstanceView
naVirtualMachineScaleSetVMInstanceView
- właściwości
AutoOSUpgradePolicy
iAutomaticOSUpgrade
są usuwane z właściwościUpgradePolicy
- Typ właściwości
Sku
w obiekciePSSnapshotUpdate
jest zmieniany zDiskSku
naSnapshotSku
-
VmScaleSetVMParameterSet
jest usuwany z cmdletAdd-AzVMDataDisk
, nie można już indywidualnie dodawać dysku danych do maszyny wirtualnej w zestawie skalowania.
Az.KeyVault (wcześniej AzureRM.KeyVault)
- Właściwość
PurgeDisabled
została usunięta zPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
i obiektówPSKeyVaultSecretAttributes
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)
Usunięto mnogie nazwy parametrów
Categories
iTimegrains
na rzecz pojedynczych nazw parametrów w skryptach poleceń cmdletSet-AzDiagnosticSetting
.Set-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 cmdletuGet-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ą teraz generowane automatycznie, więc skrypty, które wcześniej dostarczały hasła, nie są już potrzebne.New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Należy zmienić, aby pobrać 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 umożliwić tworzenie kontekstu magazynu Oauth przy użyciu jedynie 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 Storage teraz używają wzorca asynchronicznego opartego na zadaniach (TAP) zamiast synchronicznych wywołań interfejsu API. W poniższych przykładach przedstawiono nowe polecenia asynchroniczne:
Migawka obiektu blob
Moduł 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ępnij migawkę
Moduł 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
Przywracanie miękko usuniętego obiektu blob
Moduł 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()
Ustaw warstwę obiektu blob
Moduł 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
- Zainstaluj moduł Az programu PowerShell, zobacz Instalowanie modułu Az programu PowerShell dla usługi Azure Stack Hub