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.

Aby uzyskać ogólne porady dotyczące rozpoczynania pracy z migracją z modułu AzureRM do modułu Az, zobacz Rozpoczynanie migracji z modułu AzureRM do modułu Az.

Ważne

Także między wersją 1.0.0 i 2.0.0 modułu wprowadzono zmiany powodujące niezgodność. Po wykonaniu instrukcji tego przewodnika w celu aktualizacji z modułu AzureRM do modułu Az, zobacz Zmiany powodujące niezgodność w module Az 2.0.0, aby dowiedzieć się, czy musisz wprowadzić dodatkowe zmiany.

Spis treści

Ogólne zmiany powodujące niezgodność

W tej sekcji przedstawiono ogólne zmiany powodujące niezgodność wprowadzone w ramach przeprojektowania modułu Az.

Zmiany prefiksów poleceń cmdlet w postaci rzeczownika

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”. Na 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.DataFactories Az.DataFactory
AzureRM.DataFactoryV2 Az.DataFactory
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 #Requires i Import-Module

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. Na przykład:

#Requires -Module AzureRM.Compute

Należy zmienić na:

#Requires -Module Az.Compute

W przypadku ramki 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.Profile"; 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żytkowników 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 i ScmHostnameConfiguration typu PsApiManagementHostnameConfiguration z klasy PsApiManagementContext. Zamiast nich używaj właściwości PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration i ScmCustomHostnameConfiguration typu PsApiManagementCustomHostNameConfiguration.
    • Usunięto właściwość StaticIPs z klasy PsApiManagementContext. Właściwość została podzielona na właściwości PublicIPAddresses i PrivateIPAddresses.
    • Usunięto wymaganą właściwość Location z polecenia cmdlet New-AzureApiManagementVirtualNetwork.

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

  • Parametr InvoiceName został usunięty z polecenia cmdlet Get-AzConsumptionUsageDetail. W skryptach będzie trzeba używać innych parametrów tożsamości na potrzeby faktury.

Az.CognitiveServices (wcześniej AzureRM.CognitiveServices)

  • Usunięto zestaw parametrów GetSkusWithAccountParamSetName z polecenia cmdlet Get-AzCognitiveServicesAccountSkus. Musisz uzyskiwać jednostki SKU według typu konta i lokalizacji, a nie nazwy grupy zasobów i nazwy konta.

Az.Compute (wcześniej AzureRM.Compute)

  • Pole IdentityIds zostało usunięte z właściwości Identity w obiektach PSVirtualMachine i PSVirtualMachineScaleSet. Skrypty nie powinny już używać wartości tego pola do podejmowania decyzji dotyczących przetwarzania.
  • Typ właściwości InstanceView obiektu PSVirtualMachineScaleSetVM został zmieniony z VirtualMachineInstanceView na VirtualMachineScaleSetVMInstanceView
  • Właściwości AutoOSUpgradePolicy i AutomaticOSUpgrade zostały usunięte z właściwości UpgradePolicy
  • Typ właściwości Sku w obiekcie PSSnapshotUpdate został zmieniony z DiskSku na SnapshotSku
  • Zestaw VmScaleSetVMParameterSet został usunięty z polecenia cmdlet Add-AzVMDataDisk. Nie można już dodawać pojedynczego dysku danych do maszyny wirtualnej w zestawie skalowania.

Az.DataFactory (wcześniej AzureRM.DataFactories i AzureRM.DataFactoryV2)

  • Parametr GatewayName stał się obowiązkowy w poleceniu cmdlet New-AzDataFactoryEncryptValue
  • Usunięto polecenie cmdlet New-AzDataFactoryGatewayKey
  • Usunięto parametr LinkedServiceName z polecenia cmdlet Get-AzDataFactoryV2ActivityRun. Skrypty nie powinny już używać wartości tego pola do podejmowania decyzji dotyczących przetwarzania.

Az.DataLakeAnalytics (wcześniej AzureRM.DataLakeAnalytics)

  • Usunięto przestarzałe polecenia cmdlet: New-AzDataLakeAnalyticsCatalogSecret, Remove-AzDataLakeAnalyticsCatalogSecret i Set-AzDataLakeAnalyticsCatalogSecret

Az.DataLakeStore (wcześniej AzureRM.DataLakeStore)

  • W następujących poleceniach cmdlet typ parametru Encoding został zmieniony z FileSystemCmdletProviderEncoding na System.Text.Encoding. W ramach tej zmiany usunięto wartości kodowania String i Oem. Nadal dostępne są wszystkie pozostałe wcześniejsze wartości kodowania.

    • New-AzureRmDataLakeStoreItem
    • Add-AzureRmDataLakeStoreItemContent
    • Get-AzureRmDataLakeStoreItemContent
  • Usunięto przestarzały alias właściwości Tags z poleceń cmdlet New-AzDataLakeStoreAccount i Set-AzDataLakeStoreAccount

    Skrypty używające kodu

    New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}
    

    Należy zmienić na

    New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}
    
  • Usunięto przestarzałe właściwości Identity, EncryptionState, EncryptionProvisioningState, EncryptionConfig, FirewallState, FirewallRules, VirtualNetworkRules, TrustedIdProviderState, TrustedIdProviders, DefaultGroup, NewTier, CurrentTier i FirewallAllowAzureIps z obiektu PSDataLakeStoreAccountBasic. Żaden skrypt, który używa obiektu PSDatalakeStoreAccount zwróconego przez polecenie Get-AzDataLakeStoreAccount, nie powinien odwoływać się do tych właściwości.

Az.KeyVault (wcześniej AzureRM.KeyVault)

  • Właściwość PurgeDisabled została usunięta z obiektów PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItem i PSKeyVaultSecretAttributes. Skrypty nie powinny już odwoływać się do właściwości PurgeDisabled w celu podejmowania decyzji dotyczących przetwarzania.

Az.Media (wcześniej AzureRM.Media)

  • Usunięto przestarzały alias właściwości Tags z polecenia cmdlet New-AzMediaService. Skrypty używające kodu

    New-AzureRMMediaService -Tags @{TagName="TagValue"}
    

    Należy zmienić na

    New-AzMediaService -Tag @{TagName="TagValue"}
    

Az.Monitor (wcześniej AzureRM.Insights)

  • Z polecenia cmdlet Set-AzDiagnosticSetting usunięto parametry o nazwach w liczbie mnogiej Categories i Timegrains, aby zastąpić je nazwami parametrów w liczbie pojedynczej. Skrypty używające kodu

    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 polecenia cmdlet 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.OperationalInsights (wcześniej AzureRM.OperationalInsights)

  • Usunięto domyślny zestaw parametrów dla polecenia Get-AzOperationalInsightsDataSource, a zestaw ByWorkspaceNameByKind stał się domyślnym zestawem parametrów

    Skrypty zwracające listę źródeł danych przy użyciu polecenia

    Get-AzureRmOperationalInsightsDataSource
    

    Należy zmienić tak, aby określały rodzaj

    Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
    

Az.RecoveryServices (wcześniej AzureRM.RecoveryServices, AzureRM.RecoveryServices.Backup i AzureRM.RecoveryServices.SiteRecovery)

  • Usunięto parametr Encryption z polecenia cmdlet New/Set-AzRecoveryServicesAsrPolicy
  • Parametr TargetStorageAccountName jest teraz obowiązkowy na potrzeby przywracania dysku zarządzanego w poleceniu cmdlet Restore-AzRecoveryServicesBackupItem
  • Usunięto parametry StorageAccountName i StorageAccountResourceGroupName w poleceniu cmdlet Restore-AzRecoveryServicesBackupItem
  • Usunięto parametr Name w poleceniu cmdlet Get-AzRecoveryServicesBackupContainer

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ą generowane automatycznie, a skrypty, które podawały hasło:

    New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPassword
    

    Należy zmienić tak, aby uzyskiwały hasło z danych wyjściowych:

    $credential = New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476
    $secPassword = $credential.Secret
    

Az.ServiceFabric (wcześniej AzureRM.ServiceFabric)

  • Zmieniono następujące typy zwracanych poleceń cmdlet:
    • Właściwość ServiceTypeHealthPolicies typu ApplicationHealthPolicy została usunięta.
    • Właściwość ApplicationHealthPolicies typu ClusterUpgradeDeltaHealthPolicy została usunięta.
    • Właściwość OverrideUserUpgradePolicy typu ClusterUpgradePolicy została usunięta.
    • Te zmiany mają wpływ na następujące polecenia cmdlet:
      • Add-AzServiceFabricClientCertificate
      • Add-AzServiceFabricClusterCertificate
      • Add-AzServiceFabricNode
      • Add-AzServiceFabricNodeType
      • Get-AzServiceFabricCluster
      • Remove-AzServiceFabricClientCertificate
      • Remove-AzServiceFabricClusterCertificate
      • Remove-AzServiceFabricNode
      • Remove-AzServiceFabricNodeType
      • Remove-AzServiceFabricSetting
      • Set-AzServiceFabricSetting
      • Set-AzServiceFabricUpgradeType
      • Update-AzServiceFabricDurability
      • Update-AzServiceFabricReliability

Az.Sql (wcześniej AzureRM.Sql)

  • Usunięto parametry State i ResourceId z polecenia cmdlet Set-AzSqlDatabaseBackupLongTermRetentionPolicy
  • Usunięto przestarzałe polecenia cmdlet: Get/Set-AzSqlServerBackupLongTermRetentionVault, Get/Start/Stop-AzSqlServerUpgrade, Get/Set-AzSqlDatabaseAuditingPolicy, Get/Set-AzSqlServerAuditingPolicy, Remove-AzSqlDatabaseAuditing i Remove-AzSqlServerAuditing
  • Usunięto przestarzały parametr Current z polecenia cmdlet Get-AzSqlDatabaseBackupLongTermRetentionPolicy
  • Usunięto przestarzały parametr DatabaseName z polecenia cmdlet Get-AzSqlServerServiceObjective
  • Usunięto przestarzały parametr PrivilegedLogin z polecenia cmdlet Set-AzSqlDatabaseDataMaskingPolicy

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
  • Parametr Location stał się obowiązkowy w poleceniu cmdlet Get-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 i PSSite