Udostępnij za pośrednictwem


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:

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 i ScmHostnameConfiguration typu PsApiManagementHostnameConfiguration z PsApiManagementContext. Zamiast tego należy użyć PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration i ScmCustomHostnameConfiguration typu PsApiManagementCustomHostNameConfiguration.
    • Usunięto właściwość StaticIPs z PsApiManagementContext. Właściwość została podzielona na PublicIPAddresses i PrivateIPAddresses.
    • Z polecenia cmdlet New-AzureApiManagementVirtualNetwork usunięto wymaganą właściwość Location.

Az.Billing (wcześniej AzureRM.Billing, AzureRM.Consumption i AzureRM.UsageAggregates)

  • Parametr InvoiceName został usunięty z polecenia cmdlet Get-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ści Identity w obiektach PSVirtualMachine i PSVirtualMachineScaleSet, a skrypty nie powinny już używać wartości tego pola do podejmowania decyzji dotyczących przetwarzania.
  • Typ właściwości InstanceView obiektu PSVirtualMachineScaleSetVM jest zmieniany z VirtualMachineInstanceView na VirtualMachineScaleSetVMInstanceView
  • właściwości AutoOSUpgradePolicy i AutomaticOSUpgrade są usuwane z właściwości UpgradePolicy
  • Typ właściwości Sku w obiekcie PSSnapshotUpdate jest zmieniany z DiskSku na SnapshotSku
  • VmScaleSetVMParameterSet jest usuwany z cmdlet Add-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 z PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItemi obiektów PSKeyVaultSecretAttributes Skrypty nie powinny już odwoływać się do właściwości PurgeDisabled w celu podejmowania decyzji dotyczących przetwarzania.

Az.Monitor (wcześniej AzureRM.Insights)

  • Usunięto mnogie nazwy parametrów Categories i Timegrains na rzecz pojedynczych nazw parametrów w skryptach poleceń cmdlet Set-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 cmdletu Get-AzServiceEndpointPolicyDefinition
  • Usunięto przestarzałą właściwość EnableVmProtection z obiektu PSVirtualNetwork
  • 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 cmdlet New/Set-AzPolicyAssignment

  • Usunięto parametr Password z poleceń cmdlet New-AzADServicePrincipal i New-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
  • Parametr Location stał się obowiązkowy w poleceniu cmdlet Get-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, PSCloningInfoi PSSite

Następne kroki