Миграция из AzureRM в Azure PowerShell Az в Azure Stack Hub
Модуль Az имеет четность функций с AzureRM, но использует более короткие и более согласованные имена командлетов. Скрипты, написанные для командлетов AzureRM, не будут автоматически работать с новым модулем. Чтобы упростить переход, Az предлагает средства, позволяющие запускать существующие скрипты с помощью AzureRM. Миграция в новый набор команд никогда не удобна, но эта статья поможет приступить к переходу на новый модуль.
Полный список критических изменений между AzureRM и Az см. в руководстве по миграции az 1.0.0.0
Проверка установленных версий AzureRM
Перед выполнением каких-либо действий по миграции проверьте, какие версии AzureRM установлены в вашей системе. Это позволяет вам убедиться, что скрипты уже работают на последнем выпуске, и уведомить вас, если можно включить псевдонимы команд без удаления AzureRM.
Чтобы проверить, какие версии AzureRM установлены, выполните следующую команду:
Get-InstalledModule -Name AzureRM -AllVersions
Проверка работы текущих скриптов с AzureRM
Это самый важный шаг! Запустите существующие скрипты и убедитесь, что они работают с последним выпуском AzureRM (2.5.0). Если скрипты не работают, ознакомьтесь с руководством по миграции AzureRM.
Установка модуля Azure PowerShell Az
Первым шагом является установка модуля Az на платформе. При установке Az рекомендуется удалить AzureRM. В следующих шагах вы узнаете, как выполнять существующие скрипты и включить совместимость старых имен командлетов.
Чтобы установить модуль Azure PowerShell Az, выполните следующие действия.
- Рекомендуется: удалить модуль AzureRM. Убедитесь, что вы удалите все установленные версии AzureRM, а не только последнюю версию.
- Установить модуль Az
Активировать псевдонимы совместимости AzureRM
Важный
Включите режим совместимости только в том случае, если вы удалили все версии AzureRM. Включение режима совместимости с командлетами AzureRM по-прежнему может привести к непредсказуемому поведению. Пропустите этот шаг, если вы решили оставить AzureRM установленным, но помните, что все командлеты AzureRM будут использовать старые модули и не вызывать командлеты Az.
После удаления AzureRM и сценариев, работающих с последней версией AzureRM, необходимо включить режим совместимости для модуля Az. Совместимость включена с помощью команды:
Enable-AzureRmAlias -Scope CurrentUser
Псевдонимы позволяют использовать старые имена командлетов с установленным модулем Az. Эти псевдонимы записываются в профиль пользователя для выбранной области. Если профиль пользователя не существует, создается один из них.
Предупреждение
Для этой команды можно использовать другую -Scope
, но не рекомендуется. Псевдонимы записываются в профиль пользователя для выбранной области, поэтому старайтесь устанавливать их для минимально возможной области. Включение псевдонимов на уровне системы также может привести к проблемам с другими пользователями, которые установили AzureRM в локальной области.
После включения режима псевдонима запустите скрипты еще раз, чтобы убедиться, что они по-прежнему работают должным образом.
Измените названия модулей и командлетов
Как правило, имена модулей были изменены таким образом, чтобы AzureRM
и Azure
стали Az
, и то же касается командлетов.
Например, модуль AzureRM.Compute
был переименован в Az.Compute
.
New-AzureRMVM
стал New-AzVM
, и Get-AzureStorageBlob
теперь Get-AzStorageBlob
.
Существуют исключения для этого изменения именования, о которых следует знать. Некоторые модули были переименованы или объединены в существующие модули без изменения суффикса их командлетов, кроме как менять AzureRM
или Azure
на Az
. В противном случае суффикс командлета целиком был изменён, чтобы отразить новое имя модуля.
Модуль AzureRM | Модуль Az | Изменен суффикс командлета? |
---|---|---|
AzureRM.Profile | Az.Accounts | Да |
AzureRM.Insights | Az.Monitor | Да |
AzureRM.Tags | Az.Resources | Нет |
AzureRM.UsageAggregates | Az.Биллинг | Нет |
AzureRM.Consumption | Az.Billing | Нет |
Сводка
Выполнив следующие действия, вы можете обновить все существующие скрипты, чтобы использовать новый модуль. Если у вас возникли вопросы или проблемы с этими шагами, которые усложнили миграцию, прокомментируйте эту статью, чтобы мы могли улучшить инструкции.
Критические изменения для Az 1.0.0
В этом документе содержатся подробные сведения об изменениях между AzureRM 6.x и новым модулем Az версии 1.x и более поздними версиями. Оглавление поможет вам пройти полный путь миграции, включая изменения, относящиеся к модулю, которые могут повлиять на сценарии.
Основные изменения, вызывающие сбои
В этом разделе подробно описаны общие изменения, нарушающие совместимость, которые входят в редизайн модуля Az.
Изменения префикса команды cmdlet
В модуле 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 | 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 |
Изменения в именах модулей означают, что любой скрипт, использующий #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
Перенос полностью квалифицированных вызовов командлетов
Скрипты, использующие вызовы командлета с поддержкой модуля, например:
AzureRM.Compute\Get-AzureRmVM
Необходимо изменить для использования новых имен модулей и командлетов:
Az.Compute\Get-AzVM
Перенос зависимостей манифеста модуля
Модули, которые выражают зависимости от модулей AzureRM с помощью файла манифеста модуля (PSD1), должны обновить имена модулей в разделе RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Необходимо изменить следующее:
RequiredModules = @(@{ModuleName="Az.Accounts"; 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.Compute (ранее AzureRM.Compute)
-
IdentityIds
удаляются из свойстваIdentity
в объектахPSVirtualMachine
иPSVirtualMachineScaleSet
. Скрипты больше не должны использовать значение этого поля для принятия решений об обработке. - Тип свойства
InstanceView
объектаPSVirtualMachineScaleSetVM
изменяется сVirtualMachineInstanceView
наVirtualMachineScaleSetVMInstanceView
- свойства
AutoOSUpgradePolicy
иAutomaticOSUpgrade
удаляются из свойстваUpgradePolicy
- Тип свойства
Sku
в объектеPSSnapshotUpdate
изменяется сDiskSku
наSnapshotSku
-
VmScaleSetVMParameterSet
удаляется из командлетаAdd-AzVMDataDisk
, вы больше не можете добавить диск данных отдельно в виртуальную машину ScaleSet.
Az.KeyVault (ранее AzureRM.KeyVault)
- Свойство
PurgeDisabled
было удалено изPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
иPSKeyVaultSecretAttributes
объектов Scripts больше не должно ссылаться на свойствоPurgeDisabled
для принятия решений по обработке.
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.Resources (ранее AzureRM.Resources)
Удален параметр
Sku
из командлетаNew/Set-AzPolicyAssignment
Удален параметр
Password
из командлетовNew-AzADServicePrincipal
иNew-AzADSpCredential
. Пароли автоматически создаются, а скрипты предоставляют пароль.New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Необходимо изменить, чтобы получить пароль из выходных данных:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
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
Дальнейшие действия
- Дополнительные сведения о PowerShell в Azure Stack Hub см. в статье Начало работы с PowerShell в Azure Stack Hub
- Установка модуля PowerShell Az см. в статье Установка модуля PowerShell Az для Azure Stack Hub