你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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.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.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
不再主动支持这些服务的工具。 建议客户尽快在方便的时候迁移到替代服务。
Windows PowerShell 5.1 和 .NET 4.7.2
将 Az 与 Windows 版 PowerShell 5.1 配合使用需要安装 .NET Framework 4.7.2。 使用 PowerShell Core 6.x 或更高版本不需要 .NET Framework。
暂时删除了使用 PSCredential 的用户登录
由于 .NET Standard 的身份验证流发生更改,我们暂时删除了通过 PSCredential 进行的用户登录。 将在 2019 年 1 月 15 日的 Windows 版 PowerShell 5.1 中重新引入此功能。 此 GitHub 问题中详细讨论了这方面的内容。
默认设备代码登录替换了 Web 浏览器提示
由于 .NET Standard 的身份验证流发生更改,我们在交互式登录期间使用设备登录作为默认登录流。 将在 2019 年 1 月 15 日的 Windows 版 PowerShell 5.1 中重新引入基于 Web 浏览器的登录作为默认登录流。 到那时,用户将能够使用一个 Switch 参数来选择设备登录。
模块中断性变更
此部分详述单个模块和 cmdlet 的具体中断性变更。
Az.ApiManagement(以前的 AzureRM.ApiManagement)
- 删除了以下 cmdlet:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- 请改用 Set-AzApiManagement cmdlet 来设置这些属性
- 删除了以下属性:
- 从
PsApiManagementContext
中删除了PsApiManagementHostnameConfiguration
类型的属性PortalHostnameConfiguration
、ProxyHostnameConfiguration
、ManagementHostnameConfiguration
和ScmHostnameConfiguration
。 请改用PsApiManagementCustomHostNameConfiguration
类型的PortalCustomHostnameConfiguration
、ProxyCustomHostnameConfiguration
、ManagementCustomHostnameConfiguration
和ScmCustomHostnameConfiguration
。 - 从 PsApiManagementContext 中删除了属性
StaticIPs
。 此属性已拆分为PublicIPAddresses
和PrivateIPAddresses
。 - 从 New-AzureApiManagementVirtualNetwork cmdlet 中删除了必需属性
Location
。
- 从
Az.Billing(以前的 AzureRM.Billing、AzureRM.Consumption 和 AzureRM.UsageAggregates)
- 从
Get-AzConsumptionUsageDetail
cmdlet 中删除了InvoiceName
参数。 脚本将需要为发票使用其他标识参数。
Az.CognitiveServices(以前的 AzureRM.CognitiveServices)
- 从
Get-AzCognitiveServicesAccountSkus
cmdlet 中删除了GetSkusWithAccountParamSetName
参数集。 必须通过帐户类型和位置来获取 SKU,而非使用资源组名称和帐户名称。
Az.Compute(以前的 AzureRM.Compute)
- 从
PSVirtualMachine
和PSVirtualMachineScaleSet
对象中的Identity
属性中删除了IdentityIds
。脚本不应当再使用此字段的值来做出处理决策。 PSVirtualMachineScaleSetVM
对象的InstanceView
属性的类型已从VirtualMachineInstanceView
更改为VirtualMachineScaleSetVMInstanceView
- 从
UpgradePolicy
属性中删除了AutoOSUpgradePolicy
和AutomaticOSUpgrade
属性 PSSnapshotUpdate
对象中的Sku
属性的类型已从DiskSku
更改为SnapshotSku
VmScaleSetVMParameterSet
已从Add-AzVMDataDisk
cmdlet 中删除,你不再能够将数据磁盘单独添加到规模集 VM。
Az.DataFactory(以前的 AzureRM.DataFactories 和 AzureRM.DataFactoryV2)
GatewayName
参数在New-AzDataFactoryEncryptValue
cmdlet 中已成为必需参数- 删除了
New-AzDataFactoryGatewayKey
cmdlet - 从
Get-AzDataFactoryV2ActivityRun
cmdlet 中删除了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-AzDataLakeStoreAccount
cmdlet 中删除了弃用的Tags
属性别名使用以下内容的脚本
New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}
应当更改为
New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}
从
PSDataLakeStoreAccountBasic
对象中删除了弃用的属性Identity
、EncryptionState
、EncryptionProvisioningState
、EncryptionConfig
、FirewallState
、FirewallRules
、VirtualNetworkRules
、TrustedIdProviderState
、TrustedIdProviders
、DefaultGroup
、NewTier
、CurrentTier
、FirewallAllowAzureIps
。 使用从Get-AzDataLakeStoreAccount
返回的PSDatalakeStoreAccount
的任何脚本都不应当引用这些属性。
Az.KeyVault(以前的 AzureRM.KeyVault)
- 从
PSKeyVaultKeyAttributes
、PSKeyVaultKeyIdentityItem
和PSKeyVaultSecretAttributes
对象中删除了PurgeDisabled
属性。脚本不再应该引用PurgeDisabled
属性来做出处理决策。
Az.Media(以前的 AzureRM.Media)
从
New-AzMediaService
cmdlet 中删除了弃用的Tags
属性别名。使用以下内容的脚本New-AzureRMMediaService -Tags @{TagName="TagValue"}
应当更改为
New-AzMediaService -Tag @{TagName="TagValue"}
Az.Monitor(以前的 AzureRM.Insights)
从
Set-AzDiagnosticSetting
cmdlet 中删除了复数名称Categories
和Timegrains
参数并将其替换为单数参数名称。使用以下内容的脚本Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
应当更改为
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network(以前的 AzureRM.Network)
- 从
Get-AzServiceEndpointPolicyDefinition
cmdlet 中删除了弃用的ResourceId
参数 - 从
PSVirtualNetwork
对象中删除了弃用的EnableVmProtection
属性 - 删除了弃用的
Set-AzVirtualNetworkGatewayVpnClientConfig
cmdlet
脚本不应当再根据这些字段的值做出处理决策。
Az.OperationalInsights(以前的 AzureRM.OperationalInsights)
删除了
Get-AzOperationalInsightsDataSource
的默认参数集,ByWorkspaceNameByKind
已成为默认参数集使用以下内容列出了数据源的脚本
Get-AzureRmOperationalInsightsDataSource
应当更改为指定一个种类
Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
Az.RecoveryServices(以前的 AzureRM.RecoveryServices、AzureRM.RecoveryServices.Backup 和 AzureRM.RecoveryServices.SiteRecovery)
- 从
New/Set-AzRecoveryServicesAsrPolicy
cmdlet 中删除了Encryption
参数 - 通过
Restore-AzRecoveryServicesBackupItem
cmdlet 执行托管磁盘还原时,现在必须提供TargetStorageAccountName
参数 - 删除了
Restore-AzRecoveryServicesBackupItem
cmdlet 中的StorageAccountName
和StorageAccountResourceGroupName
参数 - 删除了
Get-AzRecoveryServicesBackupContainer
cmdlet 中的Name
参数
Az.Resources(以前的 AzureRM.Resources)
从
New/Set-AzPolicyAssignment
cmdlet 中删除了Sku
参数从
New-AzADServicePrincipal
和New-AzADSpCredential
cmdlet 中删除了Password
参数。密码将自动生成,提供了密码的脚本:New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPassword
应当更改为从输出中检索密码:
$credential = New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 $secPassword = $credential.Secret
Az.ServiceFabric(以前的 AzureRM.ServiceFabric)
- 以下 cmdlet 返回类型已更改:
ApplicationHealthPolicy
类型的属性ServiceTypeHealthPolicies
已删除。ClusterUpgradeDeltaHealthPolicy
类型的属性ApplicationHealthPolicies
已删除。ClusterUpgradePolicy
类型的属性OverrideUserUpgradePolicy
已删除。- 这些更改影响以下 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-AzSqlDatabaseBackupLongTermRetentionPolicy
cmdlet 中删除了State
和ResourceId
参数 - 删除了弃用的 cmdlet:
Get/Set-AzSqlServerBackupLongTermRetentionVault
、Get/Start/Stop-AzSqlServerUpgrade
、Get/Set-AzSqlDatabaseAuditingPolicy
、Get/Set-AzSqlServerAuditingPolicy
、Remove-AzSqlDatabaseAuditing
、Remove-AzSqlServerAuditing
- 从
Get-AzSqlDatabaseBackupLongTermRetentionPolicy
cmdlet 中删除了弃用的参数Current
- 从
Get-AzSqlServerServiceObjective
cmdlet 中删除了弃用的参数DatabaseName
- 从
Set-AzSqlDatabaseDataMaskingPolicy
cmdlet 中删除了弃用的参数PrivilegedLogin
Az.Storage(以前的 Azure.Storage 和 AzureRM.Storage)
- 为了支持仅使用存储帐户名称创建 Oauth 存储上下文,默认参数集已更改为
OAuthParameterSet
- 示例:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- 示例:
Location
参数在Get-AzStorageUsage
cmdlet 中已成为必需参数- 存储 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
、PSCloningInfo
和PSSite
对象中删除了弃用的属性