本檔提供 AzureRM 6.x 與新 Az 模組 1.x 版和更新版本之間變更的詳細資訊。 目錄將協助引導您完成完整的移轉路徑,包括可能影響指令碼的模組特定變更。
如需開始從 AzureRM 移轉至 Az 的一般建議,請參閱 開始從 AzureRM 移轉至 Az。
這很重要
Az 1.0.0 和 Az 2.0.0 之間也有重大變更。 遵循本指南從 AzureRM 更新至 Az 之後,請參閱 Az 2.0.0 重大變更 ,以瞭解您是否需要進行其他變更。
目錄
- 一般重大變更
- Cmdlet 名詞前綴更改
- 模組名稱變更
- 已移除的模組
- Windows PowerShell 5.1 and .NET 4.7.2
- 暫時移除使用 PSCredential 的使用者登入
- 預設裝置代碼登入,而不是網頁瀏覽器提示
- 模組重大變更
- 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 模組中,cmdlets 使用 AzureRM 或 Azure 作為名詞前綴。 Az 會簡化並正規化 Cmdlet 名稱,讓所有 Cmdlet 都使用 'Az' 作為其 Cmdlet 名詞前置詞。 例如:
Get-AzureRMVM
Get-AzureKeyVaultSecret
已變更為:
Get-AzVM
Get-AzKeyVaultSecret
為了讓轉換至這些新的 Cmdlet 名稱更簡單,Az 引進了兩個新的 Cmdlet: Enable-AzureRmAlias 和 Disable-AzureRmAlias。 為 AzureRM 中較舊的 Cmdlet 名稱建立別名,這些名稱會對應至較新的 Az Cmdlet 名稱。 使用 with 引數可讓您選擇啟用別名的位置。
例如,AzureRM 中的下列腳本:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
可以使用以下命令以 最少的更改運行:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
執行此操作將啟用您開啟的所有 PowerShell 會話中的別名,所以在執行此 Cmdlet 後,這樣的腳本完全不需要任何變更:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
如需了解 alias cmdlets 的使用完整詳細資料,請參閱 Enable-AzureRmAlias 參考。
當您準備好停用別名時, 請移除已建立的別名。 如需完整詳細資料,請參閱 Disable-AzureRmAlias 文件。
這很重要
停用別名時,請確定已針對 已 啟用別名的所有範圍停用別名。
模組名稱變更
模組名稱已從 變更為 ,但下列模組除外:
| AzureRM 模組 | Az 模組 |
|---|---|
| Azure Storage | Az.Storage |
| Azure.分析服務 | Az.AnalysisServices |
| AzureRM.Profile | Az.帳戶 |
| 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.計費 |
| AzureRM.Consumption | Az.計費 |
模組名稱的變更表示任何使用 或 載入特定模組的指令碼都必須變更,才能改用新模組。 對於 cmdlet 尾碼未變更的模組,這表示雖然模組名稱已變更,但表示作業空間的尾碼 尚未變更。
移轉 #Requires 和 Import-Module 陳述式
使用 或 宣告 AzureRM 模組相依性的腳本必須更新,才能使用新的模組名稱。 例如:
#Requires -Module AzureRM.Compute
應變更為:
#Requires -Module Az.Compute
針對 :
Import-Module -Name AzureRM.Compute
應變更為:
Import-Module -Name Az.Compute
完整限定 Cmdlet 調用的移轉
使用模組限定 Cmdlet 叫用的腳本,例如:
AzureRM.Compute\Get-AzureRmVM
必須變更,才能使用新的模組和 Cmdlet 名稱:
Az.Compute\Get-AzVM
移轉模組資訊清單相依性
透過模組資訊清單 (.psd1) 檔案來表示 AzureRM 模組相依性的模組,必須更新其 區段中的模組名稱:
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
使用 Az 搭配 PowerShell 5.1 for Windows 需要安裝 .NET Framework 4.7.2。 使用 PowerShell Core 6.x 或更新版本則不需要 .NET 框架。
暫時移除使用 PSCredential 的使用者登入
由於 .NET 標準認證流程的變更,我們暫時移除透過 PSCredential 的使用者登入功能。 此功能將於 2019 年 1 月 15 日 PowerShell 5.1 for Windows 版本中重新引入。 這點在此 GitHub 問題中有詳細討論。
預設裝置代碼登入,而不是網頁瀏覽器提示
由於 .NET 標準認證流程的變更,我們在互動式登入時將裝置登入作為預設登入流程。 透過網頁瀏覽器的登入方式將作為預設功能於 2019 年 1 月 15 日的 PowerShell 5.1 for Windows 版本中重新引入。 屆時,用戶將能夠使用 Switch 參數選擇設備登錄。
模組重大變更
本節詳細說明個別模組和 Cmdlet 的特定重大變更。
Az.ApiManagement (先前為 AzureRM.ApiManagement)
- 已移除下列 cmdlet:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- 改為使用 Set-AzApiManagement Cmdlet 來設定這些屬性
- 移除下列屬性:
- 已從 中移除類型 的屬性 、 、 和 。 請改用 、 和 類型 。
- 已從 PsApiManagementContext 移除屬性 。 該物業已拆分為 和 。
- 已從 Cmdlet 中移除必要屬性 New-AzureApiManagementVirtualNetwork。
Az.Billing (先前為 AzureRM.Billing、AzureRM.Consumption 和 AzureRM.UsageAggregates)
- 參數 已從 Cmdlet 中 移除。 指令碼需要對發票使用其他身分識別參數。
Az.CognitiveServices (先前為 AzureRM.CognitiveServices)
- 已從 cmdlet 中移除參數集。 您必須依帳戶類型和位置取得 SKU,而不是使用 ResourceGroupName 和帳戶名稱。
Az.Compute (先前為 AzureRM.Compute)
- 從 和 物件 中的內容中移除 指令碼不應再使用此欄位的值來做出處理決策。
- 物件的屬性類型會從 變更為
- 並且 從財產中 刪除財產
- 物件中的屬性類型會從[原類型]變更為[新類型]
- 已從 Cmdlet 中 移除,您無法再將資料磁碟個別新增至 ScaleSet VM。
Az.DataFactory (先前為 AzureRM.DataFactories 和 AzureRM.DataFactoryV2)
- 參數 已在 Cmdlet 中 變成必要參數
- 已移除 Cmdlet
- 已從 Cmdlet 移除 參數腳本不應再使用此欄位的值來做出處理決策。
Az.DataLakeAnalytics (先前為 AzureRM.DataLakeAnalytics)
- 已移除已淘汰的 Cmdlet: 、 和
Az.DataLakeStore (先前為 AzureRM.DataLakeStore)
下列 Cmdlet 已將 參數從類型 變更為 。 此變更會移除編碼值 和 。 所有其他先前的編碼值都會保留。
- New-AzureRmDataLakeStoreItem
- Add-AzureRmDataLakeStoreItemContent
- Get-AzureRmDataLakeStoreItemContent
已從 和 Cmdlet 移除已取代的屬性別名
使用腳本
New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}應變更為
New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}從物件中移除已棄用的屬性 , , , 任何使用傳回來源的腳本都不應參考這些屬性。
Az.KeyVault (先前為 AzureRM.KeyVault)
- 屬性已從 、 和物件中移除 Script 不應再參考屬性來做出處理決策。
Az.Media (先前為 AzureRM.Media)
從 Cmdlet 腳本中移除已棄用的屬性別名
New-AzureRMMediaService -Tags @{TagName="TagValue"}應變更為
New-AzMediaService -Tag @{TagName="TagValue"}
Az.Monitor (先前為 AzureRM.Insights)
為了支持單一參數名稱,已從 cmdlet 指令碼中移除複數名稱和參數。
Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2應變更為
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (先前為 AzureRM.Network)
- 已從 Cmdlet 移除已取代的參數
- 已從物件中移除已棄用的屬性
- 已移除過時的 cmdlet
指令碼不應再根據這些欄位的值做出處理決策。
Az.OperationalInsights (先前為 AzureRM.OperationalInsights)
已移除預設 參數集,並 已成為預設參數集
列出資料來源的腳本
Get-AzureRmOperationalInsightsDataSource應該更改為指定一種類型
Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
Az.RecoveryServices (先前為 AzureRM.RecoveryServices、AzureRM.RecoveryServices.Backup 和 AzureRM.RecoveryServices.SiteRecovery)
- 已從 cmdlet 中移除參數
- 參數現在是 Cmdlet 中 受控磁碟還原的必要參數
- 已移除 Cmdlet 中的兩個參數
- 已移除 cmdlet 中的 參數
Az.Resources (先前為 AzureRM.Resources)
已從 cmdlet 中移除參數
已移除的參數和 Cmdlet,密碼會自動生成,提供密碼的腳本:
New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword應變更,以從輸出擷取密碼:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.ServiceFabric (先前為 AzureRM.ServiceFabric)
- 下列 Cmdlet 傳回類型已變更:
- type 的屬性已被移除。
- type 的屬性已被移除。
- type 的屬性已被移除。
- 這些變更會影響下列 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 (更新 AzServiceFabric 耐久性)
- Update-AzServiceFabricReliability
Az.Sql (先前為 AzureRM.Sql)
- 已從 cmdlet 中移除參數
- 已移除已淘汰的 Cmdlet: 、 、 、 、 、
- 已從 Cmdlet 移除已取代的參數
- 已從 Cmdlet 移除已取代的參數
- 已從 Cmdlet 移除已取代的參數
Az.Storage (之前叫 Azure.Storage 與 AzureRM.Storage)
- 為了支援建立僅使用儲存體帳戶名稱的 Oauth 儲存體內容,預設參數集已變更為
- 範例:
- 參數 已在 Cmdlet 中 變成必要參數
- 儲存 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
取消刪除軟刪除的 Blob
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)
- 已從 、 、 和物件中移除已棄用的屬性