Memecahkan masalah runbook
Artikel ini menjelaskan masalah runbook yang mungkin terjadi dan cara mengatasinya. Untuk informasi umum, lihat Menjalankan runbook di Azure Automation.
Tidak mungkin lagi menggunakan cmdlet dari modul non-default yang diimpor dalam runbook PowerShell grafis
Masalah
Saat mengimpor modul PowerShell, Anda tidak akan dapat menggunakan cmdletnya dalam runbook PowerShell grafis.
Penyebab
Untuk meningkatkan postur keamanan runbook PowerShell, layanan tidak lagi memproses file manifes modul untuk mengekspor cmdlet dan fungsi. Ini berarti bahwa runbook PowerShell grafis tidak dapat digunakan saat menulis.
Resolusi
Tidak ada dampak pada eksekusi runbook yang ada. Untuk runbook baru menggunakan modul PowerShell non-default, sebaiknya gunakan runbook tekstual alih-alih runbook PowerShell grafis untuk mengatasi masalah ini. Anda dapat menggunakan ekstensi Azure Automation untuk VScode untuk penulisan dan pengeditan runbook PowerShell, yang memanfaatkan GitHub Copilot untuk menyederhanakan pengalaman penulisan runbook.
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:
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
Selidiki aliran kesalahan runbook.
Lihat aliran ini untuk pesan tertentu, dan bandingkan dengan kesalahan yang didokumentasikan dalam artikel ini.
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.
Jika runbook Anda ditangguhkan atau tiba-tiba gagal:
- Perpanjang webhook jika Anda mencoba menggunakan webhook yang kedaluwarsa untuk memulai runbook.
- Periksa status pekerjaan untuk menentukan status runbook saat ini dan beberapa kemungkinan penyebab masalah.
- Tambahkan output tambahan ke runbook untuk mengidentifikasi peristiwa yang terjadi sebelum runbook ditangguhkan.
- Tangani pengecualian apa pun yang dihasilkan oleh pekerjaan Anda.
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 Connect-AzAccount -Identity yang mencoba mengelola objek Azure, gagal bekerja 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
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:
Pastikan Anda tidak memiliki karakter khusus. Karakter ini menyertakan karakter
\@
dalam nama aset informasi masuk Automation yang Anda gunakan untuk menyambungkan ke Azure.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
Jika autentikasi Anda mengalami kegagalan lokal, Anda belum menyiapkan kredensial Microsoft Entra dengan benar. Agar akun Microsoft Entra disiapkan dengan benar, lihat artikel Autentikasi ke Azure menggunakan Microsoft Entra ID.
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:
Buka akun Automation Run As, dan salin ID Aplikasi dan Thumbprint.
Buka Kontrol akses langganan tempat akun Automation tidak dihosting, dan tambahkan penetapan peran baru.
Tambahkan ID Aplikasi yang dikumpulkan sebelumnya. Pilih izin Kontributor.
Salin nama langganan.
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:
- Di akun Automation Anda, pilih Modul, lalu pilih Perbarui modul Azure.
- 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:
- Untuk modul Azure, lihat Cara memperbarui modul Azure PowerShell di Azure Automation untuk mempelajari cara memperbarui modul di akun Automation Anda.
- Untuk modul non-Azure, pastikan modul diimpor ke akun Automation Anda.
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:
- Masuk ke langganan Azure Anda.
- Pilih akun Automation yang akan digunakan.
- Pilih Pengaturan, lalu pilih Harga.
- 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
atauCannot 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 Microsoft Entra ID dengan runbook, pastikan modul Azure Active Directory 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:
- Daripada menggunakan Start-Job, gunakan Start-AzAutomationRunbook untuk memulai runbook.
- Coba jalankan runbook di Hybrid Runbook Worker.
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.
Dokumen yang disarankan
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.