你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文档提供有关 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.ApiManagement (以前为 AzureRM.ApiManagement)
- Az.Billing(以前是 AzureRM.Billing、AzureRM.Consumption 和 AzureRM.UsageAggregates)
- Az.CognitiveServices (以前为 AzureRM.CognitiveServices)
- Az.Compute (以前为 AzureRM.Compute)
- Az.DataFactory (以前为 AzureRM.DataFactories 和 AzureRM.DataFactoryV2)
- Az.DataLakeAnalytics (以前为 AzureRM.DataLakeAnalytics)
- Az.DataLakeStore (以前为 AzureRM.DataLakeStore)
- Az.KeyVault (以前为 AzureRM.KeyVault)
- Az.Media (以前为 AzureRM.Media)
- Az.Monitor (以前为 AzureRM.Insights)
- Az.Network (以前为 AzureRM.Network)
- Az.OperationalInsights (以前为 AzureRM.OperationalInsights)
- Az.RecoveryServices(以前为 AzureRM.RecoveryServices、AzureRM.RecoveryServices.Backup 和 AzureRM.RecoveryServices.SiteRecovery)
- Az.Resources (以前为 AzureRM.Resources)
- Az.ServiceFabric (以前为 AzureRM.ServiceFabric)
- Az.Sql(以前为 AzureRM.Sql)
- Az.Storage(以前为 Azure.Storage 和 AzureRM.Storage)
- Az.Websites (以前为 AzureRM.Websites)
常规重大变更
本部分详细介绍了 Az 模块重新设计过程中的通用破坏性更改。
Cmdlet 名词前缀更改
在 AzureRM 模块中,cmdlet 使用 AzureRM 或 Azure 作为名词前缀。 Az 简化了 cmdlet 名称并规范化,以便所有 cmdlet 都使用“Az”作为其 cmdlet 名词前缀。 例如:
Get-AzureRMVM
Get-AzureKeyVaultSecret
已更改为:
Get-AzVM
Get-AzKeyVaultSecret
为了简化这些新 cmdlet 名称的转换,Az 引入了两个新的 cmdlet: Enable-AzureRmAlias 和 Disable-AzureRmAlias。
Enable-AzureRmAlias 为 AzureRM 中较旧的 cmdlet 名称创建别名,这些名称映射到较新的 Az cmdlet 名称。 使用-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 会话启用别名,以便在执行此 cmdlet 后,无需更改如下所示的脚本:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
有关别名 cmdlet 用法的完整详细信息,请参阅 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.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 |
模块名称中的更改意味着需要更改使用 #Requires 或 Import-Module 加载特定模块的任何脚本才能改用新模块。 对于 cmdlet 后缀未更改的模块,这意味着尽管模块名称已更改,但表示操作范围的后缀没有。
转移 #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
迁移完全限定的 Cmdlet 调用
使用模块限定的 cmdlet 调用的脚本,例如:
AzureRM.Compute\Get-AzureRmVM
必须修改以使用新的模块和“cmdlet”名称:
Az.Compute\Get-AzVM
迁移模块清单依赖项
通过模块清单(.psd1)文件表达对 AzureRM 模块的依赖项的模块需要更新其 RequiredModules 部分中的模块名称:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
必须更改为:
RequiredModules = @(@{ModuleName="Az.Profile"; ModuleVersion="1.0.0"})
已删除的模块
已删除以下模块:
AzureRM.BackupAzureRM.Compute.ManagedServiceAzureRM.Scheduler
这些服务的工具已不再受到技术支持。 建议客户在方便后立即迁移到替代服务。
Windows PowerShell 5.1 和 .NET 4.7.2
在 Windows 中将 Az 与 PowerShell 5.1 配合使用时,需要安装 .NET Framework 4.7.2。 使用 PowerShell Core 6.x 或更高版本不需要.NET Framework。
使用 PSCredential 临时删除用户登录
由于 .NET Standard 的身份验证流发生更改,我们暂时通过 PSCredential 删除用户登录名。 此功能将在 2019 年 1 月 15 日版本的 PowerShell 5.1 中重新引入,适用于 Windows。 这在这个GitHub问题中进行了详细讨论。
默认使用设备代码登录,而非 Web 浏览器提示
由于 .NET Standard 的身份验证流发生更改,我们在交互式登录期间使用设备登录作为默认登录流。 在 2019 年 1 月 15 日发布中,PowerShell 5.1 for Windows 将重新引入基于 Web 浏览器的登录,作为默认登录方式。 届时,用户将能够使用“Switch”参数选择设备登录。
模块破坏性变更
本部分详细介绍了各个模块和 cmdlet 的特定重大变更。
Az.ApiManagement (以前为 AzureRM.ApiManagement)
- 删除了以下 cmdlet:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment(更新 Azure API 管理部署)
- Import-AzureRmApiManagementHostnameCertificate
- 改用 Set-AzApiManagement cmdlet 设置这些属性
- 删除了以下属性:
- 删除了
PsApiManagementContext中类型为PsApiManagementHostnameConfiguration的属性PortalHostnameConfiguration、ProxyHostnameConfiguration、ManagementHostnameConfiguration和ScmHostnameConfiguration。 请改用PortalCustomHostnameConfiguration、ProxyCustomHostnameConfiguration、ManagementCustomHostnameConfiguration和ScmCustomHostnameConfiguration,其类型为PsApiManagementCustomHostNameConfiguration。 - 从 PsApiManagementContext 中删除了属性
StaticIPs。 属性已拆分为PublicIPAddresses和PrivateIPAddresses。 - 从 New-AzureApiManagementVirtualNetwork cmdlet 中删除了所需的属性
Location。
- 删除了
Az.Billing(以前是 AzureRM.Billing、AzureRM.Consumption 和 AzureRM.UsageAggregates)
- 参数
InvoiceName已从Get-AzConsumptionUsageDetailcmdlet 中删除。 脚本需要使用发票的其他标识参数。
Az.CognitiveServices (以前为 AzureRM.CognitiveServices)
- 从
GetSkusWithAccountParamSetNamecmdlet 中删除Get-AzCognitiveServicesAccountSkus了参数集。 必须按帐户类型和位置获取 SKU,而不是使用 ResourceGroupName 和帐户名称。
Az.Compute (以前为 AzureRM.Compute)
-
IdentityIds从Identity属性中被删除,PSVirtualMachine和PSVirtualMachineScaleSet对象的脚本不应再使用此字段的值来做出处理决策。 - 将
PSVirtualMachineScaleSetVM对象的InstanceView属性类型从VirtualMachineInstanceView更改为VirtualMachineScaleSetVMInstanceView -
AutoOSUpgradePolicy属性和AutomaticOSUpgrade属性从UpgradePolicy属性中被删除 - 对象中的
Sku属性类型PSSnapshotUpdate从DiskSku更改为SnapshotSku -
VmScaleSetVMParameterSet从Add-AzVMDataDiskcmdlet 中删除,无法再单独向 ScaleSet VM 添加数据磁盘。
Az.DataFactory (以前为 AzureRM.DataFactories 和 AzureRM.DataFactoryV2)
- 在
New-AzDataFactoryEncryptValuecmdlet 中,GatewayName参数已变为必需。 - 已删除
New-AzDataFactoryGatewayKeycmdlet - 从
Get-AzDataFactoryV2ActivityRuncmdlet 脚本中删除LinkedServiceName参数。此字段的值不应再用于做出处理决策。
Az.DataLakeAnalytics (以前为 AzureRM.DataLakeAnalytics)
- 删除了已弃用的 cmdlet:
New-AzDataLakeAnalyticsCatalogSecret、Remove-AzDataLakeAnalyticsCatalogSecret和Set-AzDataLakeAnalyticsCatalogSecret
Az.DataLakeStore (以前为 AzureRM.DataLakeStore)
以下 cmdlet 的
Encoding参数已从类型FileSystemCmdletProviderEncoding更改为System.Text.Encoding。 此更改将删除编码值String和Oem。 所有其他以前的编码值保持不变。- New-AzureRmDataLakeStoreItem
- Add-AzureRmDataLakeStoreItemContent
- Get-AzureRmDataLakeStoreItemContent
从
New-AzDataLakeStoreAccount和Set-AzDataLakeStoreAccountcmdlet 中删除了Tags弃用的属性别名可以使用的脚本
New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}应更改为
New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}从对象中删除了已弃用的属性
Identity、、EncryptionState、EncryptionProvisioningStateEncryptionConfig、FirewallStateFirewallRulesVirtualNetworkRulesTrustedIdProviderState、TrustedIdProviders、DefaultGroup、、NewTier、。CurrentTierFirewallAllowAzureIpsPSDataLakeStoreAccountBasic使用PSDatalakeStoreAccount返回结果Get-AzDataLakeStoreAccount的任何脚本都不应引用这些属性。
Az.KeyVault (以前为 AzureRM.KeyVault)
- 属性
PurgeDisabled已从PSKeyVaultKeyAttributes、PSKeyVaultKeyIdentityItem和PSKeyVaultSecretAttributes对象中删除,脚本不应再引用该PurgeDisabled属性来做出处理决策。
Az.Media (以前为 AzureRM.Media)
从
New-AzMediaServicecmdlet 脚本中删除已弃用的Tags属性别名New-AzureRMMediaService -Tags @{TagName="TagValue"}应更改为
New-AzMediaService -Tag @{TagName="TagValue"}
Az.Monitor (以前为 AzureRM.Insights)
删除了复数名称
Categories和Timegrains参数,改为使用来自Set-AzDiagnosticSettingcmdlet 脚本的单一参数名称。Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2应更改为
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (以前为 AzureRM.Network)
- 从
Get-AzServiceEndpointPolicyDefinitioncmdlet 中删除了已弃用的ResourceId参数 - 从
EnableVmProtection对象中删除了PSVirtualNetwork已弃用的属性 - 已删除已弃用的
Set-AzVirtualNetworkGatewayVpnClientConfigcmdlet
脚本不应再根据这些字段的值做出处理决策。
Az.OperationalInsights (以前为 AzureRM.OperationalInsights)
删除了默认
Get-AzOperationalInsightsDataSource参数集,并ByWorkspaceNameByKind成为默认参数集使用
列出数据源的脚本 Get-AzureRmOperationalInsightsDataSource应更改以明确指定“Kind”类型
Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
Az.RecoveryServices(以前为 AzureRM.RecoveryServices、AzureRM.RecoveryServices.Backup 和 AzureRM.RecoveryServices.SiteRecovery)
- 从
New/Set-AzRecoveryServicesAsrPolicycmdlet 中删除了Encryption参数 -
TargetStorageAccountName参数现在已在Restore-AzRecoveryServicesBackupItemcmdlet 中成为托管磁盘还原的必需项 - 已删除
StorageAccountName和StorageAccountResourceGroupName参数中的Restore-AzRecoveryServicesBackupItemcmdlet - cmdlet
Get-AzRecoveryServicesBackupContainer中删除了Name参数
Az.Resources (以前为 AzureRM.Resources)
从
Skucmdlet 中删除了参数New/Set-AzPolicyAssignment从
New-AzADServicePrincipal和New-AzADSpCredentialcmdlet 中删除了Password参数,密码是自动生成的,之前提供密码的脚本: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)
- 已更改以下 cmdlet 返回类型:
- 已删除类型为
ServiceTypeHealthPolicies的属性ApplicationHealthPolicy。 - 已删除类型为
ApplicationHealthPolicies的属性ClusterUpgradeDeltaHealthPolicy。 - 已删除类型为
OverrideUserUpgradePolicy的属性ClusterUpgradePolicy。 - 这些更改会影响以下命令(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(以前为 AzureRM.Sql)
- 从
Set-AzSqlDatabaseBackupLongTermRetentionPolicycmdlet中删除了State和ResourceId这两个参数 - 删除了弃用的 cmdlet:
Get/Set-AzSqlServerBackupLongTermRetentionVault、、Get/Start/Stop-AzSqlServerUpgrade、Get/Set-AzSqlDatabaseAuditingPolicyGet/Set-AzSqlServerAuditingPolicy、、Remove-AzSqlDatabaseAuditingRemove-AzSqlServerAuditing - 从
Currentcmdlet 中删除了已弃用的参数Get-AzSqlDatabaseBackupLongTermRetentionPolicy - 从
DatabaseNamecmdlet 中删除了已弃用的参数Get-AzSqlServerServiceObjective - 从
PrivilegedLogincmdlet 中删除了已弃用的参数Set-AzSqlDatabaseDataMaskingPolicy
Az.Storage(以前为 Azure.Storage 和 AzureRM.Storage)
- 为了支持创建仅包含存储帐户名称的 Oauth 存储上下文,默认参数集已更改为
OAuthParameterSet- 示例:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- 示例:
- 该
Location参数已成为Get-AzStorageUsagecmdlet 中的必需项 - 存储 API 方法现在使用基于任务的异步模式(TAP),而不是同步 API 调用。 以下示例演示了新的异步命令:
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
共享快照
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
恢复软删除的 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()
设置 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和PSCloningInfoPSSite对象中删除了已弃用的属性