Миграция с AzureRM на Azure PowerShell Az в Azure Stack Hub
Модуль Az имеет равенство функций с AzureRM, но использует более короткие и единообразные имена командлетов. Скрипты, написанные для командлетов AzureRM, не смогут автоматически работать с новым модулем. Для упрощения перехода модуль Az предлагает средства, позволяющие запускать существующие скрипты, которые используют AzureRM. Миграция всегда сопряжена со сложностями, но эта статья поможет вам начать переход на новый модуль с новым набором команд.
Полный список критических изменений между AzureRM и Az см. в статье Руководство по миграции для Az версии 1.0.0
Проверка наличия установленных версий AzureRM
Перед выполнением любых действий миграции проверьте, какие версии AzureRM установлены в вашей системе. Это позволит проверить, запущены ли скрипты с последним выпуском, и поможет понять, можете ли вы включить псевдонимы команд, не удаляя AzureRM.
Чтобы проверить установленную версию (версии) AzureRM, выполните приведенную ниже команду.
Get-InstalledModule -Name AzureRM -AllVersions
Проверка работы текущих скриптов с AzureRM
Это самый важный шаг. Запустите существующие скрипты и убедитесь, что они работают с последним выпуском AzureRM (2.5.0). Если скрипты не работают, ознакомьтесь с руководством по миграции AzureRM.
Установка модуля Az для Azure PowerShell
Первый шаг — это установка модуля Az на вашей платформе. При установке модуля Az рекомендуется удалить AzureRM. В последующих разделах вы узнаете, как продолжить использовать существующие скрипты и активировать режим совместимости со старыми именами командлетов.
Чтобы установить модуль Az для Azure PowerShell, выполните следующие шаги:
- Рекомендуется: удалите модуль 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.Billing | Нет |
AzureRM.Consumption: | Az.Billing | Нет |
Сводка
Выполнив эти шаги, можно обновить все существующие скрипты для использования с новым модулем. Если у вас возникли вопросы по описанным действиям или же проблемы, которые затруднили миграцию, оставьте комментарии к этой статье, чтобы мы могли улучшить инструкции.
Критические изменения для Az 1.0.0
В этом документе содержатся подробные сведения об отличиях между AzureRM 6.x и новым модулем Az версии 1.x и более поздних. Пункты в оглавлении помогут вам разобраться со всеми этапами переноса, включая изменения модуля, которые могут повлиять на скрипты.
Общие критически важные изменения
В этом разделе описаны общие критические изменения, которые являются частью этой переработанной версии модуля 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 | 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
для загрузки определенных модулей, необходимо будет изменить, чтобы вместо него использовать новый модуль. Для модулей, в которых суффикс командлета не был изменен, это означает, что хотя имя модуля изменилось, суффикс, указывающий пространство операции, не изменился.
Перенос инструкций требуется и импорт модулей
Скрипты, объявляющие зависимости от модулей AzureRM с помощью #Requires
или Import-Module
, должны быть обновлены для использования новых имен модулей. Пример:
#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. Эта возможность будет доступна в выпуске от 15 января 2019 г. для Windows PowerShell 5.1. Это подробно описано в этом сообщении на сайте GitHub.
Вход с кодом устройства по умолчанию вместо запроса веб-браузера
Из-за изменений в процессе проверки подлинности для .NET Standard мы используем вход устройства в качестве потока входа по умолчанию во время интерактивного входа. Вход через веб-браузер будет повторно представлен для Windows PowerShell 5.1 в качестве версии по умолчанию в выпуске от 15 января 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.Consitation и 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
. Больше нельзя отдельно добавлять диск данных в виртуальную машину из масштабируемого набора.
Az.KeyVault (ранее AzureRM.KeyVault)
- Свойство
PurgeDisabled
удалено из объектовPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
иPSKeyVaultSecretAttributes
. Скрипты больше не должны ссылаться на свойство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)
- Из командлета
Get-AzServiceEndpointPolicyDefinition
удален нерекомендуемый параметрResourceId
- Из объекта
PSVirtualNetwork
удалено нерекомендуемое свойствоEnableVmProtection
- Нерекомендуемый командлет
Set-AzVirtualNetworkGatewayVpnClientConfig
удален
Скрипты больше не должны принимать решения об обработке на основе значений этих полей.
Az.Resources (ранее AzureRM.Resources)
Из командлета
New/Set-AzPolicyAssignment
удален параметрSku
.Параметр
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. В приведенных ниже примерах показаны новые асинхронные команды.
Моментальный снимок большого двоичного объекта
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
Общий доступ к snapshot
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
Отмена удаления обратимо удаленных больших двоичных объектов
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()
Установка уровня 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 (ранее AzureRM.Websites)
- Из объектов
PSAppServicePlan
,PSCertificate
,PSCloningInfo
иPSSite
удалены нерекомендуемые свойства.
Дальнейшие действия
- Дополнительные сведения о PowerShell в Azure Stack Hub см. в статье Начало работы с PowerShell в Azure Stack Hub.
- Установка модуля PowerShell Az см. в статье Установка модуля PowerShell Az для Azure Stack Hub.