Memigrasikan dari AzureRM ke Az Azure PowerShell di Azure Stack Hub

Modul Az memiliki persamaan fitur dengan AzureRM, tetapi menggunakan nama cmdlet yang lebih pendek dan lebih konsisten. Skrip yang ditulis untuk cmdlet AzureRM tidak akan secara otomatis berfungsi dengan modul baru. Untuk mempermudah transisi, Az menawarkan alat untuk memungkinkan Anda menjalankan skrip yang ada menggunakan AzureRM. Tidak ada migrasi ke set perintah baru selalu mudah, tetapi artikel ini akan membantu Anda memulai transisi ke modul baru.

Untuk melihat daftar lengkap perubahan yang dapat menyebabkan gangguan antara AzureRM dan Az, lihat Panduan migrasi untuk Az 1.0.0

Memeriksa versi AzureRM yang terinstal

Sebelum melakukan langkah migrasi, periksa versi AzureRM mana yang terinstal pada sistem Anda. Melakukan hal itu memungkinkan Anda untuk memastikan skrip sudah berjalan pada rilis terbaru, dan mengetahui jika Anda dapat mengaktifkan alias perintah tanpa menghapus instalan AzureRM.

Untuk memeriksa versi AzureRM mana yang telah Anda terinstal, jalankan perintah:

Get-InstalledModule -Name AzureRM -AllVersions

Memeriksa skrip saat ini yang berfungsi dengan AzureRM

Ini adalah langkah yang paling penting. Jalankan skrip yang ada, dan pastikan skrip tersebut berfungsi dengan rilis terbaru AzureRM (2.5.0). Jika skrip Anda tidak berfungsi, pastikan untuk membaca Panduan migrasi AzureRM.

Menginstal modul Az Azure PowerShell

Langkah pertama adalah menginstal modul Az di platform Anda. Saat menginstal Az, sebaiknya Anda menghapus instalan AzureRM. Pada langkah-langkah berikut, Anda akan mempelajari cara tetap menjalankan skrip yang ada dan mengaktifkan kompatibilitas untuk nama cmdlet lama.

Untuk menginstal modul Az Azure PowerShell, ikuti langkah-langkah berikut:

Mengaktifkan alias kompatibilitas AzureRM

Penting

Hanya aktifkan mode kompatibilitas jika Anda telah menghapus instalan semua versi AzureRM. Mengaktifkan mode kompatibilitas dengan cmdlet AzureRM yang masih tersedia dapat menyebabkan perilaku yang tidak dapat diprediksi. Lewati langkah ini jika Anda memutuskan untuk tidak menghapus instalan AzureRM, tetapi perhatikan bahwa setiap cmdlet AzureRM akan menggunakan modul yang lebih lama dan tidak memanggil cmdlet Az.

Dengan dihapusnya instalan AzureRM dan skrip Anda berfungsi dengan versi AzureRM terbaru, langkah selanjutnya adalah mengaktifkan mode kompatibilitas untuk modul Az. Kompatibilitas diaktifkan dengan perintah:

Enable-AzureRmAlias -Scope CurrentUser

Alias memungkinkan kemampuan untuk menggunakan nama cmdlet lama dengan modul Az yang terinstal. Alias ini ditulis ke profil pengguna untuk cakupan yang dipilih. Jika tidak ada profil pengguna, satu akan dibuat.

Peringatan

Anda dapat menggunakan -Scope yang berbeda untuk perintah ini, tetapi tidak disarankan. Alias ditulis ke profil pengguna untuk cakupan yang dipilih, jadi tetap aktifkan dengan cakupan paling terbatas. Mengaktifkan alias di seluruh sistem juga dapat menyebabkan masalah bagi pengguna lain yang menginstal AzureRM di cakupan lokal mereka.

Setelah mode alias diaktifkan, jalankan skrip Anda lagi untuk mengonfirmasi alias masih berfungsi seperti yang diharapkan.

Mengubah nama modul dan cmdlet

Umumnya, nama modul telah diubah agar AzureRM dan Azure menjadi Az, dan begitu juga untuk cmdlet. Misalnya, modul AzureRM.Compute telah diganti namanya menjadi Az.Compute. New-AzureRMVM telah menjadi New-AzVM, and Get-AzureStorageBlob kini menjadi Get-AzStorageBlob.

Terdapat pengecualian pada perubahan penamaan ini yang harus Anda perhatikan. Beberapa modul diganti namanya atau digabungkan menjadi modul yang ada tanpa mempengaruhi akhiran cmdlet-nya, selain mengubah AzureRM atau Azure menjadi Az. Jika tidak, akhiran cmdlet lengkap diubah untuk mencerminkan nama modul baru.

AzureRM module Modul Az Akhiran cmdlet berubah?
AzureRM.Profile Az.Accounts Ya
AzureRM.Insights Az.Monitor Ya
AzureRM.Tags Az.Resources Tidak
AzureRM.UsageAggregates Az.Billing Tidak
AzureRM.Consumption Az.Billing Tidak

Ringkasan

Dengan mengikuti langkah-langkah ini, Anda dapat memperbarui semua skrip yang ada untuk menggunakan modul baru. Jika memiliki pertanyaan atau masalah dengan langkah-langkah ini yang membuat migrasi Anda sulit, harap beri komentar artikel ini sehingga kami dapat mempermudah petunjuknya.

Perubahan yang dapat menyebabkan gangguan untuk Az 1.0.0

Dokumen ini memberikan informasi detail tentang perubahan antara AzureRM 6.x dan modul Az baru, versi 1.x dan yang lebih baru. Daftar isi akan membantu memandu Anda menyelesaikan jalur migrasi penuh, termasuk perubahan khusus modul yang dapat memengaruhi skrip Anda.

Perubahan umum yang dapat menyebabkan gangguan

Bagian ini merinci perubahan umum yang dapat menyebabkan gangguan yang merupakan bagian dari desain ulang modul Az.

Perubahan awalan kata benda cmdlet

Di modul AzureRM, cmdlet menggunakan AzureRM atau Azure sebagai awalan kata benda. Az menyederhanakan dan menormalkan nama cmdlet, sehingga semua cmdlet menggunakan 'Az' sebagai awalan kata benda cmdlet-nya. Contohnya:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Telah berubah menjadi:

Get-AzVM
Get-AzKeyVaultSecret

Untuk mempermudah transisi ke nama cmdlet baru ini, Az memperkenalkan dua cmdlet baru, Enable-AzureRmAlias dan Disable-AzureRmAlias. Enable-AzureRmAlias membuat alias untuk nama cmdlet lama di AzureRM yang memetakan ke nama cmdlet Az yang lebih baru. Menggunakan argumen -Scope dengan Enable-AzureRmAlias memungkinkan Anda untuk memilih di mana alias diaktifkan.

Misalnya, skrip berikut di AzureRM:

#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Dapat dijalankan dengan perubahan minimal menggunakan Enable-AzureRmAlias:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Menjalankan Enable-AzureRmAlias -Scope CurrentUser akan mengaktifkan alias untuk semua sesi PowerShell yang Anda buka, sehingga setelah menjalankan cmdlet ini, skrip seperti ini tidak perlu diubah sama sekali:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Untuk detail lengkap tentang penggunaan cmdlet alias, lihat referensi Enable-AzureRmAlias.

Saat Anda siap menonaktifkan alias, Disable-AzureRmAlias akan menghapus alias yang dibuat. Untuk detail selengkapnya, lihat referensi Disable-AzureRmAlias.

Penting

Saat menonaktifkan alias, pastikan bahwa alias dinonaktifkan untuk semua cakupan yang memiliki alias aktif.

Perubahan nama modul

Nama modul telah berubah dari AzureRM.* ke Az.*, kecuali untuk modul berikut:

AzureRM module Modul 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

Perubahan dalam nama modul berarti bahwa setiap skrip yang menggunakan #Requires atau Import-Module untuk memuat modul tertentu harus diubah untuk menggunakan modul baru sebagai gantinya. Untuk modul yang akhiran cmdlet-nya tidak berubah, ini berarti meskipun nama modul telah berubah, akhiran yang menunjukkan ruang operasi masih belum.

Memigrasi memerlukan dan mengimpor pernyataan modul

Skrip yang menggunakan #Requires atau Import-Module untuk mendeklarasikan dependensi pada modul AzureRM harus diperbarui untuk menggunakan nama modul baru. Contohnya:

#Requires -Module AzureRM.Compute

Harus diubah menjadi:

#Requires -Module Az.Compute

Untuk Import-Module:

Import-Module -Name AzureRM.Compute

Harus diubah menjadi:

Import-Module -Name Az.Compute

Migrasi pemanggilan cmdlet yang memenuhi syarat

Skrip yang menggunakan pemanggilan cmdlet yang memenuhi syarat modul, seperti:

AzureRM.Compute\Get-AzureRmVM

Harus diubah untuk menggunakan modul dan nama cmdlet baru:

Az.Compute\Get-AzVM

Memigrasi dependensi manifes modul

Modul yang menunjukkan dependensi pada modul AzureRM melalui file manifes modul (.psd1) harus memperbarui nama modul di bagian RequiredModules:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Harus diubah menjadi:

RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})

Modul yang dihapus

Modul-modul berikut telah dihapus:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Alat untuk layanan ini tidak lagi didukung secara aktif. Pelanggan disarankan untuk pindah ke layanan alternatif segera setelah sesuai.

Windows PowerShell 5.1 and .NET 4.7.2

Menggunakan Az dengan PowerShell 5.1 untuk Windows memerlukan penginstalan .NET Framework 4.7.2. Menggunakan PowerShell Core 6.x atau yang lebih baru tidak memerlukan .NET Framework.

Penghapusan sementara masuk pengguna menggunakan PSCredential

Karena perubahan alur autentikasi untuk .NET Standard, kami untuk sementara menghapus pengguna yang masuk melalui PSCredential. Kemampuan ini akan diperkenalkan kembali dalam rilis 1/15/2019 untuk PowerShell 5.1 untuk Windows. Ini dibahas secara detail dalam masalah GitHub ini.

Masuk kode perangkat default sebagai ganti perintah browser web

Karena perubahan dalam alur autentikasi untuk .NET Standar, kami menggunakan masuk perangkat sebagai alur masuk default selama masuk interaktif. Masuk berbasis browser web akan diperkenalkan kembali untuk PowerShell 5.1 untuk Windows sebagai default dalam rilis 1/15/2019. Pada saat itu, pengguna akan dapat memilih masuk perangkat menggunakan parameter Beralih.

Perubahan modul yang dapat menyebabkan gangguan

Bagian ini merinci perubahan spesifik yang dapat menyebabkan gangguan untuk modul dan cmdlet individual.

Az.ApiManagement (previously AzureRM.ApiManagement)

  • Menghapus cmdlet berikut:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Gunakan cmdlet Set-AzApiMenagement untuk mengatur properti ini sebagai gantinya
  • Menghapus properti berikut:
    • Properti yang dihapus PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration, dan ScmHostnameConfiguration pada jenis PsApiManagementHostnameConfiguration dari PsApiManagementContext. Sebagai gantinya gunakan PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration, dan ScmCustomHostnameConfiguration pada jenis PsApiManagementCustomHostNameConfiguration.
    • Menghapus properti StaticIPs dari PsApiManagementContext. Properti telah dibagi menjadi PublicIPAddresses dan PrivateIPAddresses.
    • Menghapus properti Location yang diperlukan dari cmdlet New-AzureApiManagementVirtualNetwork.

Az.Billing (previously AzureRM.Billing, AzureRM.Consumption, and AzureRM.UsageAggregates)

  • Parameter InvoiceName telah dihapus dari cmdlet Get-AzConsumptionUsageDetail. Skrip perlu menggunakan parameter identitas lain untuk faktur.

Az.Compute (previously AzureRM.Compute)

  • IdentityIds dihapus dari properti Identity di objek PSVirtualMachine dan PSVirtualMachineScaleSet Skrip tidak boleh lagi menggunakan nilai kolom ini untuk membuat keputusan pemrosesan.
  • Jenis properti InstanceView objek PSVirtualMachineScaleSetVM diubah dari VirtualMachineInstanceView menjadi VirtualMachineScaleSetVMInstanceView
  • properti AutoOSUpgradePolicy dan AutomaticOSUpgrade dihapus dari properti UpgradePolicy
  • Jenis properti Sku objek PSSnapshotUpdate diubah dari DiskSku menjadi SnapshotSku
  • VmScaleSetVMParameterSet dihapus dari cmdlet Add-AzVMDataDisk, Anda tidak dapat lagi menambahkan disk data secara individual ke mesin virtual ScaleSet.

Az.KeyVault (previously AzureRM.KeyVault)

  • Properti PurgeDisabled telah dihapus dari objek PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItem, dan PSKeyVaultSecretAttributes Skrip seharusnya tidak lagi merujuk properti PurgeDisabled untuk membuat keputusan pemrosesan.

Az.Monitor (previously AzureRM.Insights)

  • Menghapus parameter Categories dan Timegrains nama jamak sebagai ganti nama parameter tunggal dari cmdlet Set-AzDiagnosticSetting Skrip menggunakan

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Harus diubah menjadi

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (previously AzureRM.Network)

  • Menghapus parameter ResourceId yang tidak digunakan lagi dari cmdlet Get-AzServiceEndpointPolicyDefinition
  • Menghapus properti EnableVmProtection yang tidak digunakan lagi dari objek PSVirtualNetwork
  • Menghapus cmdlet Set-AzVirtualNetworkGatewayVpnClientConfig yang tidak digunakan lagi

Skrip seharusnya tidak lagi membuat keputusan pemrosesan berdasarkan nilai-nilai di kolom ini.

Az.Resources (previously AzureRM.Resources)

  • Menghapus parameter Sku dari cmdlet New/Set-AzPolicyAssignment

  • Menghapus parameter Password dari cmdlet New-AzADServicePrincipal dan New-AzADSpCredential Kata sandi dibuat secara otomatis, skrip yang menyediakan kata sandinya:

    New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPassword
    

    Harus diubah untuk mengambil kata sandi dari output:

    $credential = New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476
    $secPassword = $credential.Secret
    

Az.Storage (previously Azure.Storage and AzureRM.Storage)

  • Untuk mendukung pembuatan konteks penyimpanan Oauth hanya dengan nama akun penyimpanan, kumpulan parameter default telah diubah menjadi OAuthParameterSet
    • Contoh: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Parameter Location telah menjadi wajib dalam cmdlet Get-AzStorageUsage
  • Metode API Storage kini menggunakan Pola Asinkron Berbasis Tugas (TAP), bukan panggilan API sinkron. Contoh berikut menunjukkan perintah asinkron baru:

Snapshot 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

Membagikan rekam jepret

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

Membatalkan penghapusan blob yang dihapus sementara

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()

Set tingkat 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 (previously AzureRM.Websites)

  • Menghapus properti yang tidak digunakan lagi dari objek PSAppServicePlan, PSCertificate, PSCloningInfo, dan PSSite

Langkah berikutnya