Поделиться через


Критические изменения для Az 1.0.0

В этом документе содержатся подробные сведения об изменениях между AzureRM 6.x и новым модулем Az версии 1.x и более поздними версиями. Оглавление поможет вам пройти полный путь миграции, включая изменения, относящиеся к модулю, которые могут повлиять на сценарии.

Общие советы по началу работы с миграцией из AzureRM в Az см. в статье Начало миграции из AzureRM в Az.

Важный

Были серьезные изменения между Az 1.0.0 и Az 2.0.0. После следования этому руководству по обновлению из AzureRM в Az обязательно проверьте критические изменения в Az 2.0.0, чтобы выяснить, нужно ли вносить дополнительные изменения.

Оглавление

Общие изменения, нарушающие совместимость

В этом разделе подробно описаны общие критические изменения, которые являются частью редизайна модуля Az.

Изменения префикса существительного командлета

В модуле AzureRM командлеты использовали AzureRM или Azure в качестве префикса существительного. Az упрощает и нормализует имена командлетов, чтобы все командлеты использовали "Az" в качестве префикса существительного командлета. Например:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Изменено:

Get-AzVM
Get-AzKeyVaultSecret

Чтобы упростить переход к этим новым именам командлетов, Az представляет два новых командлета, Enable-AzureRmAlias и Disable-AzureRmAlias. Enable-AzureRmAlias создает псевдонимы для старых имен командлетов в AzureRM, сопоставляя их с новыми именами командлетов Az. Использование аргумента -Scope с Enable-AzureRmAlias позволяет выбрать, где активированы псевдонимы.

Например, следующий сценарий в AzureRM:

#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Можно запускать с минимальными изменениями с помощью Enable-AzureRmAlias:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Запуск Enable-AzureRmAlias -Scope CurrentUser активирует псевдонимы для всех открытых сеансов PowerShell, так что после выполнения этого командлета сценарий, подобный этому, не нужно будет изменять вообще, например:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Полные сведения об использовании псевдонимов командлетов см. в справочнике Enable-AzureRmAlias.

Когда вы будете готовы отключить псевдонимы, Disable-AzureRmAlias удаляет созданные псевдонимы. Полные сведения см. в справочнике по Disable-AzureRmAlias.

Важный

При отключении псевдонимов убедитесь, что они отключены для всех областей, для которых ранее были включены псевдонимы.

Изменения имени модуля

Имена модулей изменились с AzureRM.* на Az.*, за исключением следующих модулей:

Модуль AzureRM Модуль Az
Azure.Storage Az.Storage
Azure.AnalysisServices Az.AnalysisServices
AzureRM.Profile Аз.Аккаунты
AzureRM.Insights Аз.Монитор
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.Потребление Az.Billing

Изменения в именах модулей означают, что любой скрипт, использующий #Requires или Import-Module для загрузки определенных модулей, потребуется изменить, чтобы использовать новый модуль. Для модулей, где суффикс командлета не изменился, это означает, что хотя имя модуля изменилось, суффикс, указывающий на пространство операций, остается , а не.

Перенос инструкций #Requires и Import-Module

Скрипты, использующие #Requires или Import-Module для объявления зависимости от модулей AzureRM, необходимо обновить, чтобы использовать новые имена модулей. Например:

#Requires -Module AzureRM.Compute

Необходимо изменить следующее:

#Requires -Module Az.Compute

Для Import-Module:

Import-Module -Name AzureRM.Compute

Необходимо изменить следующее:

Import-Module -Name Az.Compute

Перенос вызовов командлетов Fully-Qualified

Скрипты, использующие вызовы командлет с указанием модуля, например:

AzureRM.Compute\Get-AzureRmVM

Необходимо изменить для использования новых имен модулей и командлетов:

Az.Compute\Get-AzVM

Перенос зависимостей манифеста модуля

Модули, которые выражают зависимости от модулей AzureRM с помощью файла манифеста модуля (PSD1), должны обновить имена модулей в разделе RequiredModules:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Необходимо изменить следующее:

RequiredModules = @(@{ModuleName="Az.Profile"; ModuleVersion="1.0.0"})

Удаленные модули

Были удалены следующие модули:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Инструменты для этих услуг больше не поддерживаются. Клиентам рекомендуется перейти к альтернативным службам, как только это удобно.

Windows PowerShell 5.1 и .NET 4.7.2

Для Использования Az с PowerShell 5.1 для Windows требуется установка .NET Framework 4.7.2. Использование PowerShell Core 6.x или более поздней версии не требует .NET Framework.

Временное удаление имени входа пользователя с помощью PSCredential

Из-за изменений в потоке проверки подлинности для .NET Standard мы временно удаляем имя входа пользователя через PSCredential. Эта возможность будет повторно представлена в выпуске 1.15.2019 для PowerShell 5.1 для Windows. Это подробно рассматривается в этой задаче на GitHub.

Вход с использованием кода устройства по умолчанию вместо запроса в веб-браузере

В связи с изменениями в процессе аутентификации для .NET Standard, мы используем вход через устройство в качестве основного метода входа при интерактивной авторизации. Вход через веб-браузер снова станет доступен в PowerShell 5.1 для Windows в качестве значения по умолчанию в выпуске от 15.01.2019. На тот момент пользователи смогут выбрать вход на устройство с помощью параметра Switch.

Изменения, нарушающие совместимость модуля

В этом разделе подробно описаны конкретные нарушающие изменения для отдельных модулей и командлетов.

Az.ApiManagement (ранее AzureRM.ApiManagement)

  • Удалены следующие командлеты:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Используйте командлет Set-AzApiManagement, чтобы задать эти свойства.
  • Удалены следующие свойства:
    • Удалено свойство PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration и ScmHostnameConfiguration типа PsApiManagementHostnameConfiguration из PsApiManagementContext. Вместо этого используйте PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration и ScmCustomHostnameConfiguration типа PsApiManagementCustomHostNameConfiguration.
    • Удалено свойство StaticIPs из PsApiManagementContext. Имущество разделено на PublicIPAddresses и PrivateIPAddresses.
    • Удалено необходимое свойство Location из командлета New-AzureApiManagementVirtualNetwork.

Az.Billing (ранее AzureRM.Billing, AzureRM.Consumption и AzureRM.UsageAggregates)

  • Параметр InvoiceName был удален из командлета Get-AzConsumptionUsageDetail. Скрипты должны использовать другие параметры идентификации для счета-фактуры.

Az.CognitiveServices (ранее AzureRM.CognitiveServices)

  • Удален набор параметров GetSkusWithAccountParamSetName из командлета Get-AzCognitiveServicesAccountSkus. Вместо использования ResourceGroupName и имени учетной записи необходимо получить skus по типу и расположению учетной записи.

Az.Compute (ранее AzureRM.Compute)

  • IdentityIds удаляются из Identity свойства в PSVirtualMachine и PSVirtualMachineScaleSet объектов. Скрипты больше не должны использовать значение этого поля для принятия решений об обработке.
  • Тип свойства InstanceView объекта PSVirtualMachineScaleSetVM изменяется с VirtualMachineInstanceView на VirtualMachineScaleSetVMInstanceView
  • свойства AutoOSUpgradePolicy и AutomaticOSUpgrade удаляются из свойства UpgradePolicy
  • Тип свойства Sku в объекте PSSnapshotUpdate изменяется с DiskSku на SnapshotSku
  • VmScaleSetVMParameterSet удаляется из командлета Add-AzVMDataDisk, вы больше не можете добавить диск данных отдельно в виртуальную машину ScaleSet.

Az.DataFactory (ранее AzureRM.DataFactories и AzureRM.DataFactoryV2)

  • Параметр GatewayName стал обязательным в командлете New-AzDataFactoryEncryptValue
  • Удален командлет New-AzDataFactoryGatewayKey
  • Параметр LinkedServiceName был удалён из командлета Get-AzDataFactoryV2ActivityRun. Скриптам больше запрещается использовать значение этого параметра для принятия решений по обработке.

Az.DataLakeAnalytics (ранее AzureRM.DataLakeAnalytics)

  • Удалены устаревшие командлеты: New-AzDataLakeAnalyticsCatalogSecret, Remove-AzDataLakeAnalyticsCatalogSecretи Set-AzDataLakeAnalyticsCatalogSecret

Az.DataLakeStore (ранее AzureRM.DataLakeStore)

  • Следующие командлеты изменили параметр Encoding с типа FileSystemCmdletProviderEncoding на System.Text.Encoding. Это изменение удаляет значения кодировки String и Oem. Все остальные предыдущие значения кодирования остаются.

    • New-AzureRmDataLakeStoreItem
    • Add-AzureRmDataLakeStoreItemContent
    • Get-AzureRmDataLakeStoreItemContent
  • Удален устаревший псевдоним свойства Tags из командлетов New-AzDataLakeStoreAccount и Set-AzDataLakeStoreAccount

    Использование скриптов

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

    Должно быть изменено на

    New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}
    
  • Удалены устаревшие свойства Identity, EncryptionState, EncryptionProvisioningState, EncryptionConfig, FirewallState, FirewallRules, VirtualNetworkRules, TrustedIdProviderState, TrustedIdProviders, DefaultGroup, NewTier, CurrentTier, FirewallAllowAzureIps из объекта PSDataLakeStoreAccountBasic. Любой скрипт, использующий PSDatalakeStoreAccount, возвращенный из Get-AzDataLakeStoreAccount, не должен ссылаться на эти свойства.

Az.KeyVault (ранее AzureRM.KeyVault)

  • Свойство PurgeDisabled было удалено из PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItemи PSKeyVaultSecretAttributes объектов Scripts больше не должно ссылаться на свойство PurgeDisabled для принятия решений по обработке.

Az.Media (ранее AzureRM.Media)

  • Удалите устаревший псевдоним свойства Tags из командлетов New-AzMediaService в скриптах.

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

    Должно быть изменено на

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

Az.Monitor (ранее AzureRM.Insights)

  • Удалены имена множественного числа Categories и параметр Timegrains в пользу имен сингулярных параметров из скриптов командлетов Set-AzDiagnosticSetting

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Должно быть изменено на

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (ранее AzureRM.Network)

  • Удален устаревший параметр ResourceId из командлета Get-AzServiceEndpointPolicyDefinition
  • Удалено нерекомендуемое свойство EnableVmProtection из объекта PSVirtualNetwork
  • Удален устаревший командлет Set-AzVirtualNetworkGatewayVpnClientConfig

Скрипты больше не должны принимать решения по обработке на основе значений этих полей.

Az.OperationalInsights (ранее AzureRM.OperationalInsights)

  • Набор параметров по умолчанию для Get-AzOperationalInsightsDataSource удаляется, и ByWorkspaceNameByKind стал набором параметров по умолчанию.

    Скрипты, которые перечисляют источники данных, используя

    Get-AzureRmOperationalInsightsDataSource
    

    Необходимо изменить, чтобы указать тип

    Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
    

Az.RecoveryServices (ранее AzureRM.RecoveryServices, AzureRM.RecoveryServices.Backup и AzureRM.RecoveryServices.SiteRecovery)

  • Удален параметр Encryption из командлета New/Set-AzRecoveryServicesAsrPolicy
  • параметр TargetStorageAccountName теперь является обязательным для восстановления управляемого диска в командлете Restore-AzRecoveryServicesBackupItem
  • Удалены параметры StorageAccountName и StorageAccountResourceGroupName в командлете Restore-AzRecoveryServicesBackupItem
  • Удален параметр Nameв командлете Get-AzRecoveryServicesBackupContainer

Az.Resources (ранее AzureRM.Resources)

  • Удален параметр Sku из командлета New/Set-AzPolicyAssignment

  • Удален параметр Password из командлетов New-AzADServicePrincipal и New-AzADSpCredential, пароли генерируются автоматически. Скрипты, которые предоставляли пароль:

    New-AzAdSpCredential -ObjectId 00001111-aaaa-2222-bbbb-3333cccc4444 -Password $secPassword
    

    Необходимо изменить, чтобы получить пароль из выходных данных:

    $credential = New-AzAdSpCredential -ObjectId 00001111-aaaa-2222-bbbb-3333cccc4444
    $secPassword = $credential.Secret
    

Az.ServiceFabric (ранее AzureRM.ServiceFabric)

  • Изменены следующие типы возвращаемых значений командлетов:
    • Свойство ServiceTypeHealthPolicies типа ApplicationHealthPolicy было удалено.
    • Свойство ApplicationHealthPolicies типа ClusterUpgradeDeltaHealthPolicy было удалено.
    • Свойство OverrideUserUpgradePolicy типа ClusterUpgradePolicy было удалено.
    • Эти изменения влияют на следующие командлеты:
      • 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 (ранее AzureRM.Sql)

  • Удалены параметры State и ResourceId из командлета Set-AzSqlDatabaseBackupLongTermRetentionPolicy
  • Удалены устаревшие командлеты: Get/Set-AzSqlServerBackupLongTermRetentionVault, Get/Start/Stop-AzSqlServerUpgrade, Get/Set-AzSqlDatabaseAuditingPolicy, Get/Set-AzSqlServerAuditingPolicy, Remove-AzSqlDatabaseAuditing, Remove-AzSqlServerAuditing
  • Удален устаревший параметр Current из командлета Get-AzSqlDatabaseBackupLongTermRetentionPolicy
  • Был удален устаревший параметр DatabaseName из командлета Get-AzSqlServerServiceObjective
  • Удален устаревший параметр PrivilegedLogin из командлета Set-AzSqlDatabaseDataMaskingPolicy

Az.Storage (ранее Azure.Storage и AzureRM.Storage)

  • Чтобы поддерживать создание контекста хранилища Oauth только с именем учетной записи хранения, набор параметров по умолчанию был изменен на OAuthParameterSet
    • Пример: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Параметр Location стал обязательным в командлете Get-AzStorageUsage
  • Методы API хранилища теперь используют асинхронный шаблон на основе задач (TAP), а не синхронные вызовы API. В следующих примерах показаны новые асинхронные команды:

Моментальный снимок BLOB-объектов

AzureRM:

$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$b.ICloudBlob.Snapshot()

Аз:

$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$task = $b.ICloudBlob.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result

Поделиться снимком экрана

AzureRM:

$Share = Get-AzureStorageShare -Name $containerName -Context $ctx
$snapshot = $Share.Snapshot()

Аз:

$Share = Get-AzStorageShare -Name $containerName -Context $ctx
$task = $Share.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result

Восстановление мягко удалённого блоба

AzureRM:

$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$b.ICloudBlob.Undelete()

Аз:

$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$task = $b.ICloudBlob.UndeleteAsync()
$task.Wait()

Установить уровень 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")

Аз:

$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 (ранее AzureRM.Websites)

  • Удалены устаревшие свойства из объектов PSAppServicePlan, PSCertificate, PSCloningInfoи PSSite