Memecahkan masalah runbook

Artikel ini menjelaskan masalah runbook yang mungkin terjadi dan cara mengatasinya. Untuk informasi umum, lihat Menjalankan runbook di Azure Automation.

Start-AzAutomationRunbook gagal dengan pesan kesalahan "runbookName tidak cocok dengan pola yang diharapkan"

Masalah

Saat Anda menjalankan Start-AzAutomationRunbook untuk memulai runbook tertentu:

start-azautomationRunbook -Name "Test_2" -AutomationAccountName "AutomationParent" -ResourceGroupName "AutomationAccount" 

Gagal dengan kesalahan berikut:

Start-AzAutomationRunbook: "runbookname" does not match expected pattern '^[a-zA-Z]*-*[a-zA-Z0-9]*$'

Penyebab

Kode yang diperkenalkan dalam versi 1.9.0 modul Az.Automation memverifikasi nama runbook untuk memulai dan salah menandai runbook dengan beberapa karakter "-" atau dengan karakter "_" dalam nama sebagai tidak valid.

Solusi Sementara

Sebaiknya Anda kembali ke versi modul 1.8.0.

Resolusi

Saat ini, kami berupaya menyebarkan perbaikan untuk mengatasi masalah ini.

Mendiagnosis masalah runbook

Saat menerima kesalahan selama menjalankan runbook di Azure Automation, Anda bisa menggunakan langkah-langkah berikut untuk membantu mendiagnosis masalah:

  1. Pastikan skrip runbook berhasil dijalankan pada komputer lokal Anda.

    Untuk referensi bahasa dan modul pembelajaran, lihat Dokumen PowerShell atau Dokumen Python. Menjalankan skrip Anda secara lokal dapat menemukan dan mengatasi kesalahan umum, seperti:

    • Modul yang hilang
    • Kesalahan sintaksis
    • Kesalahan logika
  2. Selidiki aliran kesalahan runbook.

    Lihat aliran ini untuk pesan tertentu, dan bandingkan dengan kesalahan yang didokumentasikan dalam artikel ini.

  3. Pastikan node dan ruang kerja Automation Anda memiliki modul yang diperlukan.

    Jika runbook Anda mengimpor modul apa pun, verifikasi bahwa modul tersebut tersedia untuk akun Automation menggunakan langkah-langkah di Mengimpor modul. Perbarui modul PowerShell Anda ke versi terbaru dengan mengikuti instruksi di Memperbarui modul Azure PowerShell di Azure Automation. Untuk informasi pemecahan masalah selengkapnya, lihat Memecahkan masalah modul.

  4. Jika runbook Anda ditangguhkan atau tiba-tiba gagal:

  5. Lakukan langkah ini jika pekerjaan runbook atau lingkungan di Hybrid Runbook Worker tidak merespons.

    Jika menjalankan runbook di Hybrid Runbook Worker, alih-alih di Azure Automation, Anda mungkin perlu memecahkan masalah pekerja hibrida.

Skenario: Tidak dapat membuat pekerjaan Automation baru di wilayah Eropa Barat

Masalah

Saat membuat pekerjaan Azure Automation baru, Anda mungkin mengalami penundaan atau kegagalan dalam pembuatan pekerjaan. Pekerjaan terjadwal akan secara otomatis dihentikan, dan pekerjaan yang dijalankan melalui portal dapat dihentikan jika Anda melihat kegagalan.

Penyebab

Ini karena beban tinggi dari runbook pelanggan menggunakan layanan Automation di wilayah Eropa Barat.

Resolusi

Lakukan tindakan berikut jika layak sesuai kebutuhan dan lingkungan Anda untuk mengurangi kemungkinan kegagalan:

  • Jika Anda menggunakan bagian atas jam untuk pembuatan pekerjaan (pada pukul 12:00, 1:00, 2:00, dan sebagainya.), biasanya pada jam, atau setengah jam, kami sarankan Anda memindahkan waktu mulai pekerjaan ke lima menit sebelum atau sesudah jam/setengah jam. Ini karena sebagian besar pelanggan menggunakan awal jam untuk eksekusi pekerjaan yang secara drastis meningkatkan beban pada layanan, sementara beban relatif rendah pada slot waktu lainnya.

Skenario: Runbook gagal dengan "ini. Client.SubscriptionId tidak boleh null." pesan kesalahan

Masalah

Runbook Anda menggunakan identitas terkelola Koneksi-AzAccount -Identity yang mencoba mengelola objek Azure, gagal berfungsi dengan sukses dan mencatat kesalahan berikut -this.Client.SubscriptionId cannot be null.

get-azvm : 'this.Client.SubscriptionId' cannot be null. At line:5 char:1 + get-azvm + ~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzVM], ValidationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.GetAzureVMCommand

Penyebab

Ini dapat terjadi ketika Identitas Terkelola (atau akun lain yang digunakan dalam runbook) belum diberikan izin apa pun untuk mengakses langganan.

Resolusi

Harap berikan Identitas Terkelola (atau akun lain yang digunakan dalam runbook) keanggotaan peran yang sesuai pada langganan. Pelajari lebih lanjut

 Screenshot that shows the assigning of Azure Role assignments.

Screenshot that shows how to add role assignment.

Skenario: Akses ke Azure Storage, atau Azure Key Vault, atau Azure SQL diblokir

Skenario ini menggunakan Azure Storage sebagai contoh; namun, informasinya sama-sama dapat diterapkan untuk Azure Key Vault dan Azure SQL.

Masalah

Mencoba mengakses Azure Storage dari Runbook menghasilkan kesalahan yang mirip dengan pesan berikut: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Penyebab

Azure Firewall di Azure Storage diaktifkan.

Resolusi

Mengaktifkan Azure Firewall di Azure Storage, Azure Key Vault, atau Azure SQL memblokir akses dari runbook Azure Automation untuk layanan tersebut. Akses akan diblokir bahkan ketika pengecualian firewall diaktifkan untuk mengizinkan layanan Microsoft tepercaya, karena Automation bukan bagian dari daftar layanan tepercaya. Dengan firewall yang diaktifkan, akses hanya dapat dilakukan dengan menggunakan Hybrid Runbook Worker dan titik akhir layanan jaringan virtual.

Skenario: Runbook gagal dengan kesalahan 403 Tanpa izin atau Terlarang

Masalah

Runbook Anda gagal dengan kesalahan Tanpa izin atau Terlarang 403, atau yang setara.

Penyebab

Akun Run As mungkin tidak memiliki izin yang sama terhadap sumber daya Azure seperti akun Anda saat ini.

Resolusi

Pastikan akun Run As Anda memiliki izin untuk mengakses setiap sumber daya yang digunakan dalam skrip Anda.

Skenario: Masuk ke akun Azure gagal

Masalah

Anda menerima salah satu kesalahan berikut saat bekerja dengan cmdlet Connect-AzAccount:

Unknown_user_type: Unknown User Type
No certificate was found in the certificate store with thumbprint

Penyebab

Kesalahan ini terjadi jika nama aset informasi masuk tidak valid. Kesalahan mungkin juga terjadi jika nama pengguna dan kata sandi yang Anda gunakan untuk mengatur aset informasi masuk Automation tidak valid.

Resolusi

Untuk menentukan apa yang salah, ikuti langkah-langkah berikut:

  1. Pastikan Anda tidak memiliki karakter khusus. Karakter ini menyertakan karakter \@ dalam nama aset informasi masuk Automation yang Anda gunakan untuk menyambungkan ke Azure.

  2. Periksa untuk melihat apakah Anda bisa menggunakan nama pengguna dan kata sandi yang disimpan di informasi masuk Automation Azure di editor PowerShell ISE lokal Anda. Jalankan cmdlet berikut di PowerShell ISE.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Jika autentikasi gagal secara lokal, Anda belum menyiapkan kredensial Microsoft Entra dengan benar. Untuk menyiapkan akun Microsoft Entra dengan benar, lihat artikel Mengautentikasi ke Azure menggunakan ID Microsoft Entra.

  4. Jika kesalahan tampaknya sementara, coba tambahkan logika coba lagi ke rutinitas autentikasi Anda untuk membuat autentikasi lebih kuat.

    $logonAttempt = 0
    $logonResult = $False
    
    while(!($connectionResult) -And ($logonAttempt -le 10))
    {
        $LogonAttempt++
        #Logging in to Azure...
        $connectionResult = Connect-AzAccount `
        Start-Sleep -Seconds 30
        if($connectionResult)
        {
           $logonResult = $True 
        }
    }
    

Skenario: Jalankan Login-AzureRMAccount untuk masuk

Masalah

Anda menerima kesalahan berikut saat menjalankan runbook:

Run Login-AzureRMAccount to login.

Penyebab

Kesalahan ini dapat terjadi ketika Anda tidak menggunakan akun Run As atau akun Run As telah kedaluwarsa.

Kesalahan ini memiliki dua penyebab utama:

  • Ada berbagai versi modul AzureRM atau Az.
  • Anda mencoba mengakses sumber daya dalam langganan terpisah.

Resolusi

Jika Anda menerima kesalahan ini setelah memperbarui satu modul AzureRM atau Az, perbarui semua modul Anda ke versi yang sama.

Jika Anda mencoba mengakses sumber daya di langganan lain, ikuti langkah-langkah ini untuk mengonfigurasi izin:

  1. Buka akun Automation Run As, dan salin ID Aplikasi dan Thumbprint.

    Copy Application ID and Thumbprint

  2. Buka Kontrol akses langganan tempat akun Automation tidak dihosting, dan tambahkan penetapan peran baru.

    Access control

  3. Tambahkan ID Aplikasi yang dikumpulkan sebelumnya. Pilih izin Kontributor.

    Add role assignment

  4. Salin nama langganan.

  5. Sekarang Anda dapat menggunakan kode runbook berikut untuk menguji izin dari akun Automation Anda ke langganan lainnya. Ganti <CertificateThumbprint> dengan nilai yang disalin di langkah 1. Ganti "<SubscriptionName>" dengan nilai yang disalin di langkah 4.

    $Conn = Get-AutomationConnection -Name AzureRunAsConnection
    Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint "<CertificateThumbprint>"
    #Select the subscription you want to work with
    Select-AzSubscription -SubscriptionName '<YourSubscriptionNameGoesHere>'
    
    #Test and get outputs of the subscriptions you granted access.
    $subscriptions = Get-AzSubscription
    foreach($subscription in $subscriptions)
    {
        Set-AzContext $subscription
        Write-Output $subscription.Name
    }
    

Skenario: Tidak dapat menemukan langganan Azure

Masalah

Anda menerima kesalahan berikut saat Anda bekerja dengan cmdlet Select-AzureSubscription, Select-AzureRMSubscription, atau Select-AzSubscription:

The subscription named <subscription name> cannot be found.

Kesalahan

Kesalahan ini dapat terjadi jika:

  • Nama langganan tidak valid.
  • Pengguna Microsoft Entra yang mencoba mendapatkan detail langganan tidak dikonfigurasi sebagai administrator langganan.
  • Cmdlet tidak tersedia.
  • Pengalihan konteks terjadi.

Resolusi

Untuk pengalihan konteks, lihat Pengalihan konteks di Azure Automation.

Skenario: Runbook gagal saat berurusan dengan beberapa langganan

Masalah

Saat menjalankan runbook, runbook itu gagal mengelola sumber daya Azure.

Penyebab

Runbook tidak menggunakan konteks yang benar saat berjalan. Ini mungkin karena runbook secara tidak sengaja mencoba mengakses langganan yang salah.

Anda mungkin melihat kesalahan seperti ini:

Get-AzVM : The client '<client-id>' with object id '<object-id> does not have authorization to perform action 'Microsoft.Compute/virtualMachines/read' over scope '/subscriptions/<subcriptionIdOfSubscriptionWichDoesntContainTheVM>/resourceGroups/REsourceGroupName/providers/Microsoft.Compute/virtualMachines/VMName '.
   ErrorCode: AuthorizationFailed
   StatusCode: 403
   ReasonPhrase: Forbidden Operation
   ID : <AGuidRepresentingTheOperation> At line:51 char:7 + $vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $UNBV... +

atau seperti ini:

Get-AzureRmResource : Resource group "SomeResourceGroupName" could not be found.
... resources = Get-AzResource -ResourceGroupName $group.ResourceGro ...
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzResource], CloudException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet

Resolusi

Untuk menghindari mencoba mengakses langganan yang salah secara tidak sengaja, lihat Pengalihan konteks di Azure Automation.

Skenario: Autentikasi ke Azure gagal karena autentikasi multifaktor diaktifkan

Masalah

Anda menerima kesalahan berikut saat mengautentikasi ke Azure dengan nama pengguna dan kata sandi Azure Anda:

Add-AzureAccount: AADSTS50079: Strong authentication enrollment (proof-up) is required

Penyebab

Jika Anda memiliki autentikasi multifaktor di akun Azure, Anda tidak dapat menggunakan pengguna Microsoft Entra untuk mengautentikasi ke Azure. Sebagai gantinya, Anda perlu menggunakan sertifikat atau perwakilan layanan untuk mengautentikasi.

Resolusi

Untuk menggunakan perwakilan layanan dengan cmdlet Azure Resource Manager, lihat Membuat perwakilan layanan menggunakan portal Microsoft Azure dan Mengautentikasi perwakilan layanan dengan Azure Resource Manager.

Skenario: Runbook gagal dengan pesan kesalahan "Tugas dibatalkan"

Masalah

Runbook Anda gagal dengan kesalahan yang mirip dengan contoh berikut:

Exception: A task was cancelled.

Penyebab

Kesalahan ini dapat disebabkan oleh penggunaan modul Azure yang sudah tidak berlaku.

Resolusi

Anda dapat mengatasi kesalahan ini dengan memperbarui modul Azure Anda ke versi terbaru:

  1. Di akun Automation Anda, pilih Modul, lalu pilih Perbarui modul Azure.
  2. Pembaruan memakan waktu sekitar 15 menit. Setelah selesai, jalankan ulang runbook yang gagal.

Untuk mempelajari selengkapnya tentang memperbarui modul, lihat Memperbarui modul Azure di Azure Automation.

Skenario: Istilah yang tidak dikenali sebagai nama cmdlet, fungsi, atau skrip

Masalah

Runbook Anda gagal dengan kesalahan yang mirip dengan contoh berikut:

The term 'Connect-AzAccount' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if the path was included verify that the path is correct and try again.

Penyebab

Kesalahan ini dapat terjadi karena alasan berikut:

  • Modul yang berisi cmdlet tidak diimpor ke akun Automation.
  • Modul yang berisi cmdlet diimpor tetapi sudah kedaluwarsa.

Resolusi

Lakukan salah satu tugas berikut untuk mengatasi kesalahan ini:

Skenario: Cmdlet gagal dalam runbook PnP PowerShell di Azure Automation

Masalah

Saat runbook menulis objek yang dihasilkan PnP PowerShell ke output Azure Automation secara langsung, output cmdlet tidak dapat mengalir kembali ke Automation.

Penyebab

Masalah ini paling sering terjadi ketika Azure Automation memproses runbook yang memanggil cmdlet PnP PowerShell, misalnya, add-pnplistitem, tanpa menangkap objek yang dikembalikan.

Resolusi

Edit skrip Anda untuk menetapkan nilai pengembalian ke variabel sehingga cmdlet tidak mencoba menulis seluruh objek ke output standar. Skrip dapat mengalihkan aliran output ke cmdlet, seperti yang ditunjukkan di sini.

  $null = add-pnplistitem

Jika skrip Anda memilah output cmdlet, skrip harus menyimpan output dalam variabel dan memanipulasi variabel, bukan hanya melakukan streaming output.

$SomeVariable = add-pnplistitem ....
if ($SomeVariable.someproperty -eq ....

Skenario: Cmdlet tidak dikenali saat menjalankan runbook

Masalah

Pekerjaan runbook Anda gagal dengan kesalahan:

<cmdlet name>: The term <cmdlet name> is not recognized as the name of a cmdlet, function, script file, or operable program.

Penyebab

Kesalahan ini disebabkan ketika mesin PowerShell tidak dapat menemukan cmdlet yang Anda gunakan di runbook. Ada kemungkinan bahwa modul yang berisi cmdlet hilang dari akun, ada ketidakcocokan nama dengan nama runbook, atau cmdlet juga ada di modul lain dan Automation tidak dapat menyelesaikan nama.

Resolusi

Gunakan salah satu solusi berikut untuk memperbaiki masalah:

  • Pastikan Anda telah memasukkan nama cmdlet dengan benar.
  • Pastikan cmdlet ada di akun Automation Anda dan tidak ada ketidakcocokan. Untuk memverifikasi apakah cmdlet ada, buka runbook dalam mode edit dan cari cmdlet yang ingin Anda temukan di pustaka, atau jalankan Get-Command <CommandName>. Setelah Anda memvalidasi bahwa cmdlet tersedia untuk akun, dan tidak ada ketidakcocokan nama dengan cmdlet atau runbook lain, tambahkan cmdlet ke kanvas. Pastikan Anda menggunakan parameter yang valid yang ditetapkan di runbook Anda.
  • Jika Anda memiliki ketidakcocokan nama dan cmdlet tersedia dalam dua modul yang berbeda, atasi masalah dengan menggunakan nama yang sepenuhnya memenuhi syarat untuk cmdlet. Misalnya, Anda dapat menggunakan ModuleName\CmdletName.
  • Jika Anda menjalankan runbook lokal dalam grup hybrid worker, pastikan bahwa modul dan cmdlet dipasang pada mesin yang menghosting hybrid worker.

Skenario: Referensi objek yang salah pada panggilan ke Add-AzAccount

Masalah

Anda menerima kesalahan ini ketika Anda bekerja dengan Add-AzAccount, yang merupakan alias untuk cmdlet Connect-AzAccount:

Add-AzAccount : Object reference not set to an instance of an object

Penyebab

Kesalahan ini bisa terjadi jika runbook tidak melakukan langkah-langkah yang benar sebelum memanggil Add-AzAccount untuk menambahkan akun Automation. Contoh salah satu langkah yang diperlukan adalah masuk dengan akun Run As. Agar operasi yang benar digunakan dalam runbook Anda, lihat Menjalankan runbook di Azure Automation.

Skenario: Referensi objek tidak diatur ke instans objek

Masalah

Anda menerima kesalahan berikut saat memanggil runbook turunan dengan parameter Wait dan aliran Output berisi objek:

Object reference not set to an instance of an object

Penyebab

Jika aliran berisi objek, Start-AzAutomationRunbook tidak menangani aliran Output dengan benar.

Resolusi

Terapkan logika polling, dan gunakan cmdlet Get-AzAutomationJobOutput untuk mengambil output. Sampel logika ini didefinisikan di sini:

$AutomationAccountName = "ContosoAutomationAccount"
$RunbookName = "ChildRunbookExample"
$ResourceGroupName = "ContosoRG"

function IsJobTerminalState([string]$Status) {
  $TerminalStates = @("Completed", "Failed", "Stopped", "Suspended")
  return $Status -in $TerminalStates
}

$StartAzAutomationRunbookParameters = @{
  Name = $RunbookName
  AutomationAccountName = $AutomationAccountName
  ResourceGroupName = $ResourceGroupName
}
$Job = Start-AzAutomationRunbook @StartAzAutomationRunBookParameters
$PollingSeconds = 5
$MaxTimeout = New-TimeSpan -Hours 3 | Select-Object -ExpandProperty TotalSeconds
$WaitTime = 0
while(-NOT (IsJobTerminalState $Job.Status) -and $WaitTime -lt $MaxTimeout) {
   Start-Sleep -Seconds $PollingSeconds
   $WaitTime += $PollingSeconds
   $Job = $Job | Get-AzAutomationJob
}

$Job | Get-AzAutomationJobOutput | Get-AzAutomationJobOutputRecord | Select-Object -ExpandProperty Value

Skenario: Runbook gagal karena objek yang dideserialisasi

Masalah

Runbook Anda gagal dengan kesalahan:

Cannot bind parameter <ParameterName>.

Cannot convert the <ParameterType> value of type Deserialized <ParameterType> to type <ParameterType>.

Penyebab

Jika runbook Anda adalah Alur Kerja PowerShell, runbook ini menyimpan objek kompleks dalam format deserialisasi untuk menjaga status runbook Anda jika alur kerja ditangguhkan.

Resolusi

Gunakan salah satu solusi berikut untuk memperbaiki masalah ini:

  • Jika Anda menyalurkan objek kompleks dari satu cmdlet ke cmdlet lainnya, masukkan cmdlet ini dalam aktivitas InlineScript.
  • Teruskan nama atau nilai yang Anda perlukan dari objek kompleks alih-alih meneruskan seluruh objek.
  • Gunakan runbook PowerShell dan bukan runbook Alur Kerja PowerShell.

Skenario: 400 Status Permintaan Buruk saat memanggil webhook

Masalah

Saat mencoba memanggil webhook untuk runbook Azure Automation, Anda menerima kesalahan berikut:

400 Bad Request : This webhook has expired or is disabled

Penyebab

Webhook yang coba Anda panggil dinonaktifkan atau kedaluwarsa.

Resolusi

Jika webhook dinonaktifkan, Anda dapat mengaktifkannya kembali melalui portal Microsoft Azure. Jika webhook telah kedaluwarsa, Anda harus menghapus lalu membuatnya kembali. Anda hanya dapat memperpanjang webhook jika webhook belum kedaluwarsa.

Skenario: 429: Tingkat permintaan saat ini terlalu besar

Masalah

Anda menerima pesan kesalahan berikut saat menjalankan cmdlet Get-AzAutomationJobOutput:

429: The request rate is currently too large. Please try again

Penyebab

Kesalahan ini dapat terjadi ketika mengambil output pekerjaan dari runbook yang memiliki banyak aliran verbose.

Resolusi

Lakukan salah satu dari berikut ini untuk mengatasi kesalahan ini:

  • Edit runbook, dan kurangi jumlah aliran pekerjaan yang dipancarkannya.
  • Kurangi jumlah aliran yang akan diambil saat menjalankan cmdlet. Untuk melakukannya, Anda dapat menyetel nilai parameter Stream untuk cmdlet Get-AzAutomationJobOutput untuk mengambil hanya aliran Output. ​

Skenario: Pekerjaan Runbook gagal karena kuota yang dialokasikan terlampaui

Masalah

Pekerjaan runbook Anda gagal dengan kesalahan:

The quota for the monthly total job run time has been reached for this subscription

Penyebab

Kesalahan ini terjadi ketika menjalankan pekerjaan melebihi kuota gratis 500 menit untuk akun Anda. Kuota ini berlaku untuk semua jenis tugas menjalankan pekerjaan. Beberapa tugas ini adalah menguji pekerjaan, memulai pekerjaan dari portal, menjalankan pekerjaan dengan menggunakan webhook, atau menjadwalkan pekerjaan untuk dijalankan menggunakan portal Microsoft Azure atau pusat data Anda. Untuk mempelajari selengkapnya tentang harga untuk Automation, lihat Harga otomatisasi.

Resolusi

Jika Anda ingin menggunakan lebih dari 500 menit pemrosesan per bulan, ubah langganan Anda dari tingkat Gratis ke tingkat Dasar:

  1. Masuk ke langganan Azure Anda.
  2. Pilih akun Automation yang akan digunakan.
  3. Pilih Pengaturan, lalu pilih Harga.
  4. Pilih Aktifkan di bagian bawah halaman untuk meningkatkan akun Anda ke tingkat Dasar.

Skenario: Aliran output Runbook lebih besar dari 1 MB

Masalah

Runbook Anda yang berjalan di sandbox Azure gagal dengan kesalahan berikut:

The runbook job failed due to a job stream being larger than 1MB, this is the limit supported by an Azure Automation sandbox.

Penyebab

Kesalahan ini terjadi karena runbook Anda mencoba menulis terlalu banyak data pengecualian ke aliran output.

Resolusi

Ada batas 1 MB pada aliran output pekerjaan. Pastikan runbook Anda menyertakan panggilan ke executable atau subprocess dengan menggunakan blok try dan catch. Jika operasi memunculkan pengecualian, minta kode menulis pesan dari pengecualian tersebut ke dalam variabel Automation. Teknik ini mencegah pesan ditulis ke dalam aliran output pekerjaan. Untuk pekerjaan Hybrid Runbook Worker yang dijalankan, aliran output yang dipotong menjadi 1 MB ditampilkan tanpa pesan kesalahan.

Skenario: Pekerjaan runbook mulai dicoba kembali tiga kali, tetapi selalu gagal

Masalah

Runbook Anda gagal dengan kesalahan berikut:

The job was tried three times but it failed

Penyebab

Kesalahan ini terjadi karena salah satu masalah berikut:

  • Batas memori. Pekerjaan mungkin gagal jika menggunakan lebih dari 400 MB memori. Batas memori yang didokumentasikan yang dialokasikan ke sandbox ditemukan pada batas layanan Automation.

  • Soket jaringan. Sandbox Azure dibatasi hingga 1.000 soket jaringan bersamaan. Untuk informasi selengkapnya, lihat Batas layanan Automation.

  • Modul tidak kompatibel. Dependensi modul mungkin tidak benar. Dalam kasus ini, runbook Anda biasanya mengembalikan pesan Command not found atau Cannot bind parameter.

  • Tidak ada autentikasi dengan Active Directory untuk sandbox. Runbook Anda mencoba memanggil executable atau subprocess yang berjalan di sandbox Azure. Mengonfigurasi runbook untuk mengautentikasi dengan MICROSOFT Entra ID dengan menggunakan Azure Active Directory Authentication Library (ADAL) tidak didukung.

Resolusi

  • Batas memori, soket jaringan. Cara yang disarankan untuk bekerja dalam batas memori adalah dengan membagi beban kerja di antara beberapa runbook, memproses lebih sedikit data dalam memori, menghindari penulisan output yang tidak perlu dari runbook Anda, dan pertimbangkan berapa banyak titik pemeriksaan yang ditulis ke runbook alur kerja PowerShell Anda. Gunakan metode yang jelas, seperti $myVar.clear, untuk membersihkan variabel dan menggunakan [GC]::Collect untuk segera menjalankan pengumpulan sampah. Tindakan ini mengurangi jejak memori runbook Anda selama runtime.

  • Modul tidak kompatibel. Perbarui modul Azure Anda dengan mengikuti langkah-langkah dalam Cara memperbarui modul Azure PowerShell di Azure Automation.

  • Tidak ada autentikasi dengan Active Directory untuk sandbox. Saat Anda mengautentikasi ke ID Microsoft Entra dengan runbook, pastikan modul Azure AD tersedia di akun Automation Anda. Pastikan untuk memberikan akun Run As izin yang diperlukan untuk melakukan tugas yang diotomatiskan runbook.

    Jika runbook Anda tidak dapat memanggil executable atau subprocess yang berjalan di sandbox Azure, gunakan runbook pada Hybrid Runbook Worker. Hybrid worker tidak dibatasi oleh batas memori dan jaringan yang dimiliki sandbox Azure.

Skenario: Pekerjaan PowerShell gagal dengan pesan kesalahan "Tidak dapat memanggil metode"

Masalah

Anda menerima pesan kesalahan berikut saat memulai pekerjaan PowerShell dalam runbook yang berjalan di Azure:

Exception was thrown - Cannot invoke method. Method invocation is supported only on core types in this language mode.

Penyebab

Kesalahan ini mungkin mengindikasikan bahwa runbook yang berjalan dalam sandbox Azure tidak dapat berjalan dalam mode Bahasa Penuh.

Resolusi

Ada dua cara untuk mengatasi kesalahan ini:

Untuk mempelajari selengkapnya tentang perilaku ini dan perilaku lain dari runbook Azure Automation, lihat Menjalankan runbook di Azure Automation.

Skenario: Runbook yang berjalan lama gagal diselesaikan

Masalah

Runbook Anda muncul dalam status Berhenti setelah berjalan selama tiga jam. Anda mungkin juga menerima kesalahan ini:

The job was evicted and subsequently reached a Stopped state. The job cannot continue running.

Perilaku ini dirancang di sandbox Azure karena pemantauan fair share dari proses dalam Azure Automation. Jika sebuah proses dijalankan lebih dari tiga jam, fair share secara otomatis menghentikan runbook. Status runbook yang melewati batas waktu fair share berbeda dengan jenis runbook. Runbook PowerShell dan Python diatur ke status Dihentikan. Runbook Alur Kerja PowerShell diatur ke Gagal.

Penyebab

Runbook berjalan selama batas tiga jam yang diizinkan oleh fair share dalam sandbox Azure.

Resolusi

Salah satu solusi yang direkomendasikan adalah menjalankan runbook pada Hybrid Runbook Worker. Hybrid worker tidak dibatasi oleh batas runbook fair share tiga jam yang dimiliki sandbox Azure. Runbook yang berjalan pada Hybrid Runbook Workers harus dikembangkan untuk mendukung perilaku hidupkan ulang jika ada masalah infrastruktur lokal yang tidak terduga.

Solusi lain adalah mengoptimalkan runbook dengan membuat runbook turunan. Jika runbook melakukan perulangan melalui fungsi yang sama pada sejumlah sumber daya, seperti operasi database pada beberapa database, Anda bisa memindahkan fungsi tersebut ke runbook turunan. Setiap runbook turunan dijalankan secara paralel dalam proses terpisah. Perilaku ini mengurangi jumlah waktu untuk menyelesaikan runbook induk.

Cmdlet PowerShell yang mengaktifkan skenario runbook turunan adalah:

  • Start-AzAutomationRunbook. Cmdlet ini memungkinkan Anda untuk memulai runbook dan meneruskan parameter ke runbook.
  • Get-AzAutomationJob. Jika ada operasi yang perlu dilakukan setelah runbook turunan selesai, cmdlet ini memungkinkan Anda untuk memeriksa status pekerjaan untuk setiap turunan.

Skenario: Kesalahan dalam aliran pekerjaan tentang metode get_SerializationSettings

Masalah

Anda melihat kesalahan berikut dalam aliran pekerjaan untuk runbook:

Connect-AzAccount : Method 'get_SerializationSettings' in type
'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly
'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
does not have an implementation.
At line:16 char:1
+ Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -Appl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Connect-AzAccount], TypeLoadException
    + FullyQualifiedErrorId : System.TypeLoadException,Microsoft.Azure.Commands.Profile.ConnectAzAccountCommand

Penyebab

Kesalahan ini mungkin disebabkan oleh penggunaan migrasi yang tidak lengkap dari modul AzureRM ke Az di runbook Anda. Situasi ini dapat menyebabkan Azure Automation memulai pekerjaan runbook dengan hanya menggunakan modul AzureRM, dan kemudian memulai pekerjaan lain dengan hanya menggunakan modul Az, yang menyebabkan crash sandbox.

Resolusi

Sebaiknya Anda tidak menggunakan cmdlet Az dan AzureRM dalam runbook yang sama. Untuk mempelajari selengkapnya tentang penggunaan yang benar dari modul, lihat Memigrasikan ke modul Az.

Skenario: Akses ditolak saat menggunakan sandbox Azure untuk runbook atau aplikasi

Masalah

Saat runbook atau aplikasi Anda mencoba berjalan di sandbox Azure, lingkungan menolak akses.

Penyebab

Masalah ini dapat terjadi karena sandbox Azure mencegah akses ke semua server COM yang tidak diproses. Misalnya, aplikasi dengan sandbox atau runbook tidak dapat memanggil ke Windows Management Instrumentation (WMI) atau ke layanan Pemasang Windows (msiserver.exe).

Resolusi

Untuk detail tentang penggunaan sandbox Azure, lihat Lingkungan menjalankan Runbook.

Skenario: Kode status Terlarang tidak valid saat menggunakan Key Vault di dalam runbook

Masalah

Saat mencoba mengakses Azure Key Vault melalui runbook Azure Automation, Anda mendapatkan kesalahan berikut:

Operation returned an invalid status code 'Forbidden'

Penyebab

Kemungkinan penyebab masalah ini adalah:

  • Tidak menggunakan akun Run As.
  • Izin tidak memadai.

Resolusi

Tidak menggunakan akun Run As

Ikuti Langkah 5 - Tambahkan autentikasi untuk mengelola sumber daya Azure untuk memastikan bahwa Anda menggunakan akun Run As untuk mengakses Key Vault.

Izin tidak memadai

Tambahkan izin ke Key Vault untuk memastikan bahwa akun Run As Anda memiliki izin yang memadai untuk mengakses Key Vault.

Skenario: Runbook gagal dengan kesalahan "Panjang parameter terlampaui"

Masalah

Runbook Anda menggunakan parameter dan gagal dengan kesalahan berikut:

Total Length of Runbook Parameter names and values exceeds the limit of 30,000 characters. To avoid this issue, use Automation Variables to pass values to runbook.

Penyebab

Ada batasan panjang total karakter dari semua Parameter yang dapat disediakan dalam runbook Python 2.7, Python 3.8, dan PowerShell 7.1. Panjang total semua nama Parameter dan nilai Parameter tidak boleh lebih dari 30.000 karakter.

Resolusi

Untuk mengatasi masalah ini, Anda dapat menggunakan Variabel Azure Automation untuk meneruskan nilai ke runbook. Anda dapat mengurangi jumlah karakter dalam nama Parameter dan nilai Parameter secara alternatif untuk memastikan panjang total tidak lebih dari 30.000 karakter.

Langkah berikutnya

Jika Anda tidak melihat masalah di sini atau tidak dapat menyelesaikan masalah, coba salah satu saluran berikut untuk dukungan lebih lanjut:

  • Dapatkan jawaban dari para ahli Azure melalui Forum Internet Azure.
  • Sambungkan dengan @AzureSupport, akun resmi Microsoft Azure untuk meningkatkan pengalaman pelanggan. Dukungan Azure menghubungkan komunitas Azure dengan jawaban, dukungan, dan para ahli.
  • Jika memerlukan bantuan lainnya, Anda dapat mengajukan insiden dukungan Azure. Buka situs web dukungan Azure, lalu pilih Dapatkan Dukungan.