Runbook sorunlarını giderme

Bu makalede, oluşabilecek runbook sorunları ve bunların nasıl çözülebileceği açıklanmaktadır. Genel bilgi için bkz. Azure Otomasyonu runbook yürütme.

Artık içeri aktarılan ve varsayılan olmayan modüllerdeki cmdlet'leri grafik PowerShell runbook'larında kullanmak mümkün değildir

Sorun

Bir PowerShell modülünü içeri aktardığınızda, cmdlet'lerini grafik PowerShell runbook'larında kullanamazsınız.

Neden

PowerShell runbook'larının güvenlik duruşunu geliştirmek için hizmet artık modül bildirim dosyasını işleyip cmdlet'leri ve işlevleri dışarı aktarmaz. Bu, grafik PowerShell runbook'ları yazılırken kullanılamayacağı anlamına gelir.

Çözüm

Mevcut runbook'ların yürütülmesi üzerinde hiçbir etkisi yoktur. Varsayılan olmayan PowerShell modülleri kullanan yeni runbook'lar için bu sorunun üstesinden gelmek için grafik PowerShell runbook'ları yerine metinsel runbook'ları kullanmanızı öneririz. Runbook yazma deneyimini basitleştirmek için GitHub Copilot'dan yararlanan PowerShell runbook'larını yazmak ve düzenlemek için VScode için Azure Otomasyonu uzantısını kullanabilirsiniz.

Start-AzAutomationRunbook "runbookName beklenen desenle eşleşmiyor" hata iletisiyle başarısız oluyor

Sorun

Belirli runbook'ları başlatmak için çalıştırdığınızda Start-AzAutomationRunbook :

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

Aşağıdaki hatayla başarısız olur:

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

Neden

Az.Automation modülünün 1.9.0 sürümünde kullanıma sunulan kod, runbook'ların adlarını doğrular ve runbook'ları birden çok "-" karakterle veya adında "_" karakteri geçersiz olarak yanlış bayraklar.

Geçici çözüm

Modülün 1.8.0 sürümüne geri dönmenizi öneririz.

Çözüm

Şu anda bu sorunu gidermek için bir düzeltme dağıtmaya çalışıyoruz.

Runbook sorunlarını tanılama

Azure Otomasyonu'nda runbook yürütme sırasında hatalar aldığınızda, sorunları tanılamaya yardımcı olması için aşağıdaki adımları kullanabilirsiniz:

  1. Yerel makinenizde runbook betiğinizin başarıyla yürütüldüğünden emin olun.

    Dil başvurusu ve öğrenme modülleri için PowerShell Belgelerine veya Python Belgelerine bakın. Betiğinizin yerel olarak çalıştırılması, aşağıdakiler gibi yaygın hataları bulabilir ve çözebilir:

    • Eksik modüller
    • Sözdizimi hataları
    • Mantık hataları
  2. Runbook hata akışlarını araştırın.

    Belirli iletiler için bu akışlara bakın ve bunları bu makalede belgelenen hatalarla karşılaştırın.

  3. Düğümlerinizin ve Otomasyon çalışma alanınızın gerekli modüllere sahip olduğundan emin olun.

    Runbook'unuz modülleri içeri aktarıyorsa, Modülleri içeri aktarma bölümündeki adımları kullanarak bunların Otomasyon hesabınızda kullanılabilir olduğunu doğrulayın. Azure Otomasyonu'nda Azure PowerShell modüllerini güncelleştirme başlığı altındaki yönergeleri izleyerek PowerShell modüllerinizi en son sürüme güncelleştirin. Diğer sorun giderme bilgileri için bkz. Modüllerde sorun giderme.

  4. Runbook'unuz askıya alınıyor veya beklenmedik şekilde başarısız oluyorsa:

  5. Runbook işi veya Karma Runbook Çalışanı üzerindeki ortam yanıt vermiyorsa bu adımı uygulayın.

    Runbook'larınızı Azure Otomasyonu yerine bir Karma Runbook Çalışanı üzerinde çalıştırıyorsanız karma çalışanın sorunlarını gidermeniz gerekebilir.

Senaryo: Batı Avrupa bölgesinde yeni Otomasyon işi oluşturulamıyor

Sorun

Yeni Otomasyon işleri oluştururken gecikme veya iş oluşturma hatasıyla karşılaşabilirsiniz. Zamanlanmış işler otomatik olarak kullanımdan kaldırılır ve bir hata görürseniz portal aracılığıyla yürütülen işler kullanımdan kaldırılabilir.

Neden

Bunun nedeni, Batı Avrupa bölgesindeki Otomasyon hizmetini kullanan müşterilerin runbook'larından yüksek yük olmasıdır.

Çözüm

Hata olasılığını azaltmak için gereksinimlerinize ve ortamınıza göre uygunsa aşağıdaki eylemi gerçekleştirin:

  • İş oluşturma işlemi için saat başı (saat 12:00, 1:00, 2:00 vb.) kullanıyorsanız, genellikle saat veya yarım saat içinde iş başlangıç zamanını saat/yarım saatten beş dakika öncesine veya sonrasına taşımanızı öneririz. Bunun nedeni, müşterilerin çoğunun iş yürütme için saatin başlangıcını kullanmasıdır ve bu da hizmet üzerindeki yükü önemli ölçüde artırırken, diğer zaman yuvalarında yükün nispeten düşük olmasıdır.

Senaryo: Runbook şu hatayla başarısız oluyor: "Bu. Client.SubscriptionId null olamaz." hata iletisi

Sorun

Azure nesnelerini yönetmeye çalışan yönetilen kimlik Bağlan-AzAccount -Identity kullanan runbook'unuz başarıyla çalışamıyor ve aşağıdaki hatayı günlüğe kaydedemiyor -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

Neden

Yönetilen Kimliğe (veya runbook'ta kullanılan başka bir hesaba) aboneliğe erişim izni verilmediğinde bu durum oluşabilir.

Çözüm

Yönetilen Kimliğe (veya runbook'ta kullanılan başka bir hesaba) abonelik üzerinde uygun bir rol üyeliği verin. Daha fazla bilgi edinin

 Azure Rol atamalarının atandığını gösteren ekran görüntüsü.

Rol ataması eklemeyi gösteren ekran görüntüsü.

Senaryo: Azure Depolama, Azure Key Vault veya Azure SQL'e erişim engellendi

Bu senaryoda örnek olarak Azure Depolama kullanılır; ancak bilgiler Azure Key Vault ve Azure SQL için de aynı şekilde geçerlidir.

Sorun

Bir Runbook'tan Azure Depolama'a erişme girişimi aşağıdaki iletiye benzer bir hatayla sonuçlanır:The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Neden

Azure Depolama'da Azure Güvenlik Duvarı etkinleştirilir.

Çözüm

Azure Depolama, Azure Key Vault veya Azure SQL'de Azure Güvenlik Duvarı etkinleştirilmesi, söz konusu hizmetler için Azure Otomasyonu runbook'lardan erişimi engeller. Otomasyon güvenilen hizmet listesinde yer almadığından, güvenilen Microsoft hizmetlerine izin vermek için güvenlik duvarı özel durumu etkinleştirildiğinde bile erişim engellenir. Etkin bir güvenlik duvarıyla erişim yalnızca Karma Runbook Çalışanı ve sanal ağ hizmet uç noktası kullanılarak yapılabilir.

Senaryo: Runbook, İzin yok veya Yasak 403 hatasıyla başarısız oluyor

Sorun

Runbook'unuz İzin yok veya Yasak 403 hatasıyla veya eşdeğeriyle başarısız oluyor.

Neden

Farklı Çalıştır hesaplarının Azure kaynakları üzerinde geçerli Otomasyon hesabınızla aynı izinleri olmayabilir.

Çözüm

Farklı Çalıştır hesabınızın betiğinizde kullanılan kaynaklara erişme izinlerine sahip olduğundan emin olun.

Senaryo: Azure hesabında oturum açma başarısız oldu

Sorun

cmdlet'iyle Connect-AzAccount çalışırken aşağıdaki hatalardan birini alırsınız:

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

Neden

Kimlik bilgisi varlık adı geçerli değilse bu hatalar oluşur. Otomasyon kimlik bilgileri varlığını ayarlarken kullandığınız kullanıcı adı ve parola geçerli olmadığında da bu hatalar oluşabilir.

Çözüm

Neyin yanlış olduğunu belirlemek için şu adımları izleyin:

  1. Özel karakter olmadığından emin olun. Bu karakterler, Azure'a bağlanmak için kullandığınız Otomasyon kimlik bilgisi varlık adındaki \@ karakterini içerir.

  2. Yerel PowerShell ISE düzenleyicinizdeki Azure Otomasyonu kimlik bilgisinde depolanan kullanıcı adını ve parolayı kullanıp kullanamadığınızı denetleyin. PowerShell ISE'de aşağıdaki cmdlet'leri çalıştırın.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Kimlik doğrulamanız yerel olarak başarısız olursa Microsoft Entra kimlik bilgilerinizi düzgün ayarlamadığınız anlamına gelir. Microsoft Entra hesabının doğru ayarlanması için Microsoft Entra ID kullanarak Azure'da kimlik doğrulama makalesine bakın.

  4. Hata geçici gibi görünüyorsa kimlik doğrulamayı daha sağlam hale getirmek için kimlik doğrulama yordamınıza yeniden deneme mantığı eklemeyi deneyin.

    $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 
        }
    }
    

Senaryo: Oturum açmak için Login-AzureRMAccount komutunu çalıştırma

Sorun

Bir runbook çalıştırdığınızda aşağıdaki hatayı alırsınız:

Run Login-AzureRMAccount to login.

Neden

Farklı Çalıştır hesabı kullanmadığınızda veya Farklı Çalıştır hesabının süresi dolduğunda bu hata oluşabilir.

Bu hatanın iki temel nedeni vardır:

  • AzureRM veya Az modülünün farklı sürümleri var.
  • Ayrı bir abonelikteki kaynaklara erişmeye çalışıyorsunuz.

Çözüm

Bir AzureRM veya Az modülünü güncelleştirdikten sonra bu hatayı alırsanız tüm modüllerinizi aynı sürüme güncelleştirin.

Başka bir abonelikteki kaynaklara erişmeye çalışıyorsanız izinleri yapılandırmak için şu adımları izleyin:

  1. Otomasyon Farklı Çalıştır hesabına gidin ve Uygulama Kimliği ile Parmak İzi'ni kopyalayın.

    Uygulama Kimliği ve Parmak İzi Kopyalama

  2. Otomasyon hesabının barındırılmadığı aboneliğin Erişim denetimine gidin ve yeni bir rol ataması ekleyin.

    Erişim denetimi

  3. Daha önce toplanan Uygulama Kimliğini ekleyin. Katkıda bulunan izinleri'ne tıklayın.

    Rol ataması ekle

  4. Aboneliğin adını kopyalayın.

  5. Artık Otomasyon hesabınızdan diğer aboneliğe yönelik izinleri test etmek için aşağıdaki runbook kodunu kullanabilirsiniz. değerini 1. adımda kopyalanan değerle değiştirin <CertificateThumbprint> . değerini 4. adımda kopyalanan değerle değiştirin "<SubscriptionName>" .

    $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
    }
    

Senaryo: Azure aboneliği bulunamıyor

Sorun

, Select-AzureRMSubscriptionveya Select-AzSubscription cmdlet'iyle Select-AzureSubscriptionçalışırken aşağıdaki hatayı alırsınız:

The subscription named <subscription name> cannot be found.

Hata

Aşağıdaki durumlarda bu hata oluşabilir:

  • Abonelik adı geçerli değil.
  • Abonelik ayrıntılarını almaya çalışan Microsoft Entra kullanıcısı, aboneliğin yöneticisi olarak yapılandırılmamış.
  • Cmdlet kullanılamıyor.
  • Bağlam değiştirme oluştu.

Çözüm

Bağlam değiştirme için bkz. Azure Otomasyonu'da bağlam geçişi.

Senaryo: Birden fazla abonelikle ilgilenirken runbook'lar başarısız oluyor

Sorun

Runbook'ları yürütürken runbook, Azure kaynaklarını yönetemiyor.

Neden

Runbook çalışırken doğru bağlamı kullanmıyor. Bunun nedeni runbook'un yanlışlıkla yanlış aboneliğe erişmeye çalışması olabilir.

Aşağıdaki gibi hatalar görebilirsiniz:

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... +

veya şunun gibi:

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

Çözüm

Yanlışlıkla yanlış aboneliğe erişmeye çalışmaktan kaçınmak için bkz. Azure Otomasyonu'de bağlam değiştirme.

Senaryo: Çok faktörlü kimlik doğrulaması etkinleştirildiği için Azure'da kimlik doğrulaması başarısız oluyor

Sorun

Azure kullanıcı adınız ve parolanızla Azure'da kimlik doğrulaması yaparken aşağıdaki hatayı alıyorsunuz:

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

Neden

Azure hesabınızda çok faktörlü kimlik doğrulaması varsa, Azure'da kimlik doğrulaması yapmak için Microsoft Entra kullanıcısını kullanamazsınız. Bunun yerine, kimlik doğrulaması için bir sertifika veya hizmet sorumlusu kullanmanız gerekir.

Çözüm

Azure Resource Manager cmdlet'leriyle hizmet sorumlusu kullanmak için bkz . Azure portalını kullanarak hizmet sorumlusu oluşturma ve Azure Resource Manager ile hizmet sorumlusu kimliğini doğrulama.

Senaryo: Runbook "Görev iptal edildi" hata iletisiyle başarısız oluyor

Sorun

Runbook'unuz aşağıdaki örneğe benzer bir hatayla başarısız oluyor:

Exception: A task was cancelled.

Neden

Bu hatanın nedeni eski Azure modüllerinin kullanılması olabilir.

Çözüm

Azure modüllerinizi en son sürüme güncelleştirerek bu hatayı çözebilirsiniz:

  1. Otomasyon hesabınızda Modüller'i ve ardından Azure modüllerini güncelleştir'i seçin.
  2. Güncelleştirme 15 dakika kadar sürebilir. İşlem tamamlandıktan sonra başarısız olan runbook'u yeniden çalıştırın.

Modüllerinizi güncelleştirme hakkında daha fazla bilgi için Azure Otomasyonu'nda Azure modüllerini güncelleştirme konusuna bakın.

Senaryo: Terim bir cmdlet, işlev veya betik adı olarak tanınmıyor.

Sorun

Runbook'unuz aşağıdaki örneğe benzer bir hatayla başarısız oluyor:

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.

Neden

Bu hata aşağıdaki nedenlerden kaynaklanabilir:

  • Cmdlet'i içeren modül Otomasyon hesabına aktarılmadı.
  • Cmdlet'i içeren modül içeri aktarıldı ama güncel değil.

Çözüm

Bu hatayı düzeltmek için aşağıdaki görevlerden birini yapın:

Senaryo: Cmdlet, Azure Otomasyonu üzerinde PnP PowerShell runbook'unda başarısız oluyor

Sorun

Bir runbook doğrudan Azure Otomasyonu çıkışına PnP PowerShell tarafından oluşturulan bir nesne yazdığında cmdlet çıkışı Otomasyon'a geri akış yapamaz.

Neden

Bu sorun en yaygın olarak, Azure Otomasyonu PnP PowerShell cmdlet'lerini çağıran runbook'ları add-pnplistitemdönüş nesnelerini yakalamadan işlediğinde oluşur.

Çözüm

Cmdlet'lerin tüm nesneleri standart çıktıya yazmaya çalışmaması için değişkenlere dönüş değerleri atamak için betiklerinizi düzenleyin. Betik, burada gösterildiği gibi çıkış akışını bir cmdlet'e yeniden yönlendirebilir.

  $null = add-pnplistitem

Betiğiniz cmdlet çıkışını ayrıştırıyorsa betiğin çıkışı bir değişkende depolaması ve çıkışın akışını yapmak yerine değişkeni işlemesi gerekir.

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

Senaryo: Runbook yürütülürken cmdlet tanınmadı

Sorun

Runbook işiniz bu hatayı vererek başarısız oluyor:

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

Neden

Bu hata, PowerShell altyapısı runbook'unuzda kullandığınız cmdlet'i bulamadığında oluşur. Cmdlet'i içeren modülün hesapta eksik olması, runbook adıyla bir ad çakışması olması veya cmdlet'in başka bir modülde de bulunması ve Otomasyon'un adı çözümleyememe olasılığı vardır.

Çözüm

Sorunu çözmek için aşağıdaki çözümlerden herhangi birini kullanın:

  • Cmdlet adını doğru girdiğinizden emin olun.
  • Cmdlet'in Otomasyon hesabınızda mevcut olduğundan ve çakışma olmadığından emin olun. Cmdlet'in mevcut olup olmadığını doğrulamak için, bir runbook'u düzenleme modunda açın ve kitaplıkta bulmak istediğiniz cmdlet'i arayın veya komutunu çalıştırın Get-Command <CommandName>. Cmdlet'in hesapta kullanılabilir olduğunu ve diğer cmdlet'lerle veya runbook'larla ad çakışması olmadığını doğruladıktan sonra cmdlet'i tuvale ekleyin. Runbook'unuzda geçerli bir parametre kümesi kullandığınızdan emin olun.
  • Ad çakışmanız varsa ve cmdlet iki farklı modülde kullanılabiliyorsa, cmdlet için tam adı kullanarak sorunu çözün. Örneğin, ModuleName\CmdletName değerini kullanabilirsiniz.
  • Runbook'u bir karma çalışan grubunda şirket içinde yürütüyorsanız, modülün ve cmdlet'in karma çalışanı barındıran makineye yüklendiğinden emin olun.

Senaryo: Add-AzAccount çağrısında yanlış nesne başvurusu

Sorun

cmdlet'inin Connect-AzAccount diğer adı olan ile Add-AzAccountçalışırken bu hatayı alırsınız:

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

Neden

Runbook, Otomasyon hesabını eklemek için çağırmadan Add-AzAccount önce düzgün adımları gerçekleştirmezse bu hata oluşabilir. Gerekli adımlardan biri, Farklı Çalıştır hesabıyla oturum açmaktır. Runbook'unuzda kullanılacak doğru işlemler için bkz. Azure Otomasyonu'de Runbook yürütme.

Senaryo: Nesne başvurusu bir nesnenin örneğine ayarlanmadı

Sorun

parametresiyle Wait bir alt runbook çağırdığınızda ve Output akışı bir nesne içerdiğinde aşağıdaki hatayı alırsınız:

Object reference not set to an instance of an object

Neden

Akış nesneleri içeriyorsa Çıkış Start-AzAutomationRunbook akışını doğru işlemez.

Çözüm

Yoklama mantığı uygulayın ve çıkışı almak için Get-AzAutomationJobOutput cmdlet'ini kullanın. Bu mantığın bir örneği burada tanımlanmıştır:

$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

Senaryo: Seri durumdan çıkarılmış nesne nedeniyle Runbook başarısız oluyor

Sorun

Runbook'unuz şu hatayla başarısız oluyor:

Cannot bind parameter <ParameterName>.

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

Neden

Runbook'unuz bir PowerShell İş Akışı ise, iş akışı askıya alınırsa runbook durumunuzu kalıcı hale getirmek için karmaşık nesneleri seri durumdan çıkarılmış biçimde depolar.

Çözüm

Bu sorunu çözmek için aşağıdaki çözümlerden birini kullanın:

  • Karmaşık nesneleri bir cmdlet'ten başka bir cmdlet'e aktarıyorsanız bu cmdlet'leri bir InlineScript etkinliğinde sarmalayın.
  • Karmaşık nesnenin tamamını geçirmek yerine nesneden ihtiyacınız olan adı veya değeri geçirin.
  • PowerShell İş Akışı runbook'u yerine PowerShell runbook'u kullanın.

Senaryo: 400 Web kancası çağrılırken Hatalı İstek durumu

Sorun

Azure Otomasyonu runbook için web kancası çağırmaya çalıştığınızda aşağıdaki hatayı alırsınız:

400 Bad Request : This webhook has expired or is disabled

Neden

Çağırmaya çalıştığınız web kancası devre dışı bırakıldı veya süresi doldu.

Çözüm

Web kancası devre dışı bırakıldıysa Azure Portal aracılığıyla onu yeniden etkinleştirebilirsiniz. Web kancasının süresi dolduysa, silip yeniden oluşturmanız gerekir. Web kancasını yenileyebilmeniz için süresinin dolmamış olması gerekir.

Senaryo: 429: Şu anda istek oranı fazla büyük

Sorun

Cmdlet'i çalıştırırken Get-AzAutomationJobOutput aşağıdaki hata iletisini alırsınız:

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

Neden

Bu hata, çok sayıda ayrıntılı akışı olan bir runbook'tan iş çıktısı alınırken oluşabilir.

Çözüm

Bu hatayı düzeltmek için aşağıdakilerden birini yapın:

  • Runbook'u düzenleyin ve yaydığı iş akışlarının sayısını azaltın.
  • cmdlet'i çalıştırılırken alınacak akış sayısını azaltın. Bunu yapmak için, Get-AzAutomationJobOutput cmdlet'inin parametresinin Stream değerini yalnızca Çıkış akışlarını alacak şekilde ayarlayabilirsiniz. ​

Senaryo: Ayrılan kota aşıldığından Runbook işi başarısız oluyor

Sorun

Runbook işiniz bu hatayı vererek başarısız oluyor:

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

Neden

bu hata, iş yürütmesi hesabınız için 500 dakikalık ücretsiz kotayı aştığında oluşur. Bu kota tüm iş yürütme görevleri türleri için geçerlidir. Bu görevlerden bazıları bir işi test eder, portaldan bir iş başlatır, web kancalarını kullanarak bir işi yürütür veya Azure portalını veya veri merkezinizi kullanarak yürütülecek bir iş zamanlar. Otomasyon fiyatlandırması hakkında daha fazla bilgi edinmek için bkz . Otomasyon fiyatlandırması.

Çözüm

Ayda 500 dakikadan fazla işlem kullanmak istiyorsanız aboneliğinizi Ücretsiz katmanından Temel katmana değiştirin:

  1. Azure aboneliğinizde oturum açın.
  2. Yükseltecek Otomasyon hesabını seçin.
  3. Ayarlar'ı ve ardından Fiyatlandırma'yı seçin.
  4. Hesabınızı Temel katmana yükseltmek için sayfanın altındaki Etkinleştir'i seçin.

Senaryo: Runbook çıkış akışı 1 MB'tan büyük

Sorun

Azure korumalı alanında çalışan runbook'unuz aşağıdaki hatayla başarısız oluyor:

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

Neden

Runbook'unuz çıkış akışına çok fazla özel durum verisi yazmaya çalıştığından bu hata oluşur.

Çözüm

İş çıkış akışında 1 MB sınırı vardır. Runbook'unuzun ve catch bloklarını kullanarak try yürütülebilir bir dosyaya veya alt işleme çağrıları dahil etmesini sağlayın. İşlemler bir özel durum oluşturursa, kodun özel durumdan otomasyon değişkenine ileti yazmasını sağlayın. Bu teknik, iletinin iş çıktı akışına yazılmasını engeller. Yürütülen Karma Runbook Çalışanı işleri için, 1 MB'a kesilmiş çıkış akışı hata iletisi olmadan görüntülenir.

Senaryo: Runbook işini başlatmak için üç deneme yapıldı ama her deneme başarısız oldu

Sorun

Runbook'unuz aşağıdaki hatayla başarısız oluyor:

The job was tried three times but it failed

Neden

Aşağıdaki sorunlardan biri bu hataya neden olabilir:

  • Bellek sınırı. 400 MB'tan fazla bellek kullanan bir iş başarısız olabilir. Korumalı alana ayrılan bellekle ilgili belgelerde yer alan sınırlar Otomasyon hizmet sınırları sayfasında bulunur.

  • Ağ yuvaları. Azure korumalı alanları 1.000 eşzamanlı ağ yuvasıyla sınırlıdır. Daha fazla bilgi için bkz. Otomasyon hizmet sınırları.

  • Modül uyumsuz. Modül bağımlılıkları doğru olmayabilir. Bu durumda runbook'unuz genellikle bir Command not found veya Cannot bind parameter iletisi döndürür.

  • Korumalı alan için Active Directory ile kimlik doğrulaması yok. Runbook'unuz Azure korumalı alanında çalışan bir yürütülebilir dosyayı veya alt işlemi çağırmaya çalıştı. Azure Active Directory Kimlik Doğrulama Kitaplığı'nı (ADAL) kullanarak Runbook'ları Microsoft Entra Id ile kimlik doğrulaması yapmak için yapılandırma desteklenmez.

Çözüm

  • Bellek sınırı, ağ yuvaları. Bellek sınırları içinde çalışmanın önerilen yolları, iş yükünü birden çok runbook arasında bölmek, bellekte daha az veri işlemek, runbook'larınızdan gereksiz çıkış yazmaktan kaçınmak ve PowerShell iş akışı runbook'larınıza kaç denetim noktası yazıldığından kaçınmaktır. Değişkenleri temizlemek için gibi $myVar.clearclear yöntemini kullanın ve atık toplamayı hemen çalıştırmak için kullanın [GC]::Collect . Bu eylemler çalışma zamanı sırasında runbook'unuzun bellek ayak izini azaltır.

  • Modül uyumsuz. Azure Otomasyonu'da Azure PowerShell modülleri güncelleştirme bölümündeki adımları izleyerek Azure modüllerinizi güncelleştirin.

  • Korumalı alan için Active Directory ile kimlik doğrulaması yok. Runbook'la Microsoft Entra Kimlik'te kimlik doğrulaması yaparken Otomasyon hesabınızda Azure AD modülünün bulunduğundan emin olun. Runbook'un otomatikleştirdiği görevleri yerine getirmek için Farklı Çalıştır hesabına gerekli izinleri verdiğinizden emin olun.

    Runbook'unuz Azure korumalı alanında çalışan bir yürütülebilir dosyayı veya alt işlemi çağıramıyorsa Karma Runbook Çalışanı'nda runbook'u kullanın. Azure korumalı alanlarına uygulanan bellek ve ağ sınırları karma çalışanlara uygulanmaz.

Senaryo: PowerShell işi "Yöntem çağrılamıyor" hata iletisiyle başarısız oluyor

Sorun

Azure'da çalışan bir runbook'ta PowerShell işi başlattığınızda aşağıdaki hata iletisini alıyorsunuz:

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

Neden

Bu hata, Azure korumalı alanında çalışan runbook'ların Tam Dil modunda çalışamazsınız.

Çözüm

Bu hatayı düzeltmenin iki yolu vardır:

  • Start-Job kullanmak yerine Start-AzAutomationRunbook komutunu kullanarak runbook'u başlatın.
  • Runbook'u bir Karma Runbook Çalışanı üzerinde çalıştırmayı deneyin.

Bu davranış ve Azure Otomasyonu runbook'ların diğer davranışları hakkında daha fazla bilgi edinmek için bkz. Azure Otomasyonu'da Runbook yürütme.

Senaryo: Uzun süre çalışan runbook tamamlanamıyor

Sorun

Runbook'unuz üç saat çalıştırıldıktan sonra Durduruldu durumunda gösterilir. Şu hatayı da alabilirsiniz:

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

Bu davranış, Azure Otomasyonu içindeki işlemlerin eşit pay izlemesi nedeniyle Azure korumalı alanlarında tasarım gereğidir. Bir işlem üç saatten uzun bir süre yürütülürse, fair share otomatik olarak bir runbook'u durdurur. Adil paylaşım süresi sınırını aşan bir runbook'un durumu runbook türüne göre farklılık gösterir. PowerShell ve Python runbook'ları Durduruldu durumuna ayarlanır. PowerShell İş Akışı runbook'ları Başarısız olarak ayarlanır.

Neden

Runbook, Azure korumalı alanında adil paylaşımın izin verdiği üç saatlik sınırı aştı.

Çözüm

Önerilen çözümlerden biri runbook'u Karma Runbook Çalışanı üzerinde çalıştırmaktır. Karma çalışanlar, Azure korumalı alanlarının sahip olduğu üç saatlik adil paylaşım runbook sınırıyla sınırlı değildir. Beklenmeyen yerel altyapı sorunları varsa, Karma Runbook Çalışanları üzerinde çalışan runbook'lar yeniden başlatma davranışlarını destekleyecek şekilde geliştirilmelidir.

Bir diğer çözüm de alt runbook'lar oluşturarak runbook'u iyileştirmektir. Runbook'unuz aynı işlevi birkaç kaynakta döngüye alırsa (örneğin, birkaç veritabanındaki bir veritabanı işleminde), işlevi bir alt runbook'a taşıyabilirsiniz. Her alt runbook ayrı bir işlemde paralel olarak yürütülür. Bu davranış, üst runbook'un tamamlanması için toplam süreyi azaltır.

Alt runbook senaryosunu etkinleştiren PowerShell cmdlet'leri şunlardır:

  • Start-AzAutomationRunbook. Bu cmdlet bir runbook başlatmanızı ve bu runbook'a parametre iletmenizi sağlar.
  • Get-AzAutomationJob. Alt runbook tamamlandıktan sonra gerçekleştirilmesi gereken işlemler varsa, bu cmdlet her alt öğe için iş durumunu denetlemenize olanak tanır.

Senaryo: get_SerializationSettings yöntemiyle ilgili iş akışlarında hata

Sorun

Runbook için iş akışlarınızda aşağıdaki hatayı görürsünüz:

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

Neden

Bu hatanın nedeni büyük olasılıkla runbook'unuzda AzureRM'den Az modüllerine tamamlanmamış bir geçiş kullanılmasıdır. Bu durum, Azure Otomasyonu yalnızca AzureRM modüllerini kullanarak bir runbook işi başlatmasına ve ardından yalnızca Az modüllerini kullanarak başka bir iş başlatmasına neden olabilir ve bu da korumalı alan kilitlenmesine neden olur.

Çözüm

Az ve AzureRM cmdlet'lerinin aynı runbook'ta kullanılmasını önermiyoruz. Modüllerin doğru kullanımı hakkında daha fazla bilgi edinmek için bkz . Az modüllerine geçiş.

Senaryo: Runbook veya uygulama için Azure korumalı alanı kullanılırken erişim reddedildi

Sorun

Runbook'unuz veya uygulamanız bir Azure korumalı alanında çalıştırmayı denediğinde ortam erişimi reddeder.

Neden

Bu sorun, Azure korumalı alanları tüm işlem dışı COM sunucularına erişimi engellediğinden oluşabilir. Örneğin, korumalı bir uygulama veya runbook, Windows Yönetim Araçları'na (WMI) veya Windows Installer hizmetine (msiserver.exe) çağrı yapamaz.

Çözüm

Azure korumalı alan kullanımı hakkında ayrıntılı bilgi için bkz . Runbook yürütme ortamı.

Senaryo: Runbook içinde Key Vault kullanılırken geçersiz Yasak durum kodu

Sorun

Azure Key Vault'a bir Azure Otomasyonu runbook üzerinden erişmeye çalıştığınızda aşağıdaki hatayı alırsınız:

Operation returned an invalid status code 'Forbidden'

Neden

Bu sorunun olası nedenleri şunlardır:

  • Farklı Çalıştır hesabı kullanılmıyor.
  • Yetersiz izinler.

Çözüm

Farklı Çalıştır hesabı kullanmama

Key Vault'a erişmek için Farklı Çalıştır hesabı kullandığınızdan emin olmak için 5. Adım - Azure kaynaklarını yönetmek için kimlik doğrulaması ekleme adımlarını izleyin.

Yetersiz izinler

Farklı Çalıştır hesabınızın Key Vault'a erişmek için yeterli izinlere sahip olduğundan emin olmak için Key Vault'a izinler ekleyin.

Senaryo: Runbook "Parametre uzunluğu aşıldı" hatasıyla başarısız oluyor

Sorun

Runbook'unuz parametreler kullanıyor ve aşağıdaki hatayla başarısız oluyor:

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.

Neden

Python 2.7, Python 3.8 ve PowerShell 7.1 runbook'larında sağlanabilir tüm Parametrelerin toplam karakter uzunluğu sınırı vardır. Tüm Parametre adlarının ve Parametre değerlerinin toplam uzunluğu 30.000 karakteri aşmamalıdır.

Çözüm

Bu sorunun üstesinden gelmek için Azure Otomasyonu Değişkenlerini kullanarak değerleri runbook'a geçirebilirsiniz. Alternatif olarak, toplam uzunluğun 30.000 karakteri aşmadığından emin olmak için Parametre adları ve Parametre değerleri'ndeki karakter sayısını azaltabilirsiniz.

Sonraki adımlar

Sorununuzu burada görmüyorsanız veya sorununuzu çözemiyorsanız daha fazla destek için aşağıdaki kanallardan birini deneyin:

  • Azure Forumları aracılığıyla Azure uzmanlarından yanıt alın.
  • müşteri deneyimini geliştirmek için resmi Microsoft Azure hesabı olan @AzureSupport ile Bağlan. Azure Desteği yanıtlar, destek ve uzmanlar için sizi Azure topluluğuna bağlar.
  • Daha fazla yardıma ihtiyacınız varsa bir Azure desteği olayı oluşturabilirsiniz. Azure desteği sitesine gidin ve Destek Al'ı seçin.