استكشاف مشكلات دفتر التشغيل وإصلاحها

توضح هذه المقالة مشكلات دفتر التشغيل التي قد تحدث وكيف يتم حلها. للحصول على معلومات عامة، راجع تنفيذ دفتر التشغيل في Azure Automation.

لم يعد من الممكن استخدام cmdlets من الوحدات النمطية غير الافتراضية المستوردة في دفاتر تشغيل PowerShell الرسومية

المشكلة

عند استيراد وحدة PowerShell، لن تتمكن من استخدام أوامر cmdlets الخاصة به في دفاتر تشغيل PowerShell الرسومية.

السبب

لتحسين وضع الأمان لدفاتر تشغيل PowerShell، لم تعد الخدمة تعالج ملف بيان الوحدة النمطية لتصدير cmdlets والوظائف. وهذا يعني أنه لا يمكن استخدامها عند تأليف دفاتر تشغيل PowerShell الرسومية.

نوع الحل

لا يوجد أي تأثير على تنفيذ دفاتر التشغيل الموجودة. بالنسبة لدفاتر التشغيل الجديدة التي تستخدم وحدات PowerShell النمطية غير الافتراضية، نوصي باستخدام دفاتر التشغيل النصية بدلا من دفاتر تشغيل PowerShell الرسومية للتغلب على هذه المشكلة. يمكنك استخدام ملحق Azure Automation ل VScode لتأليف وتحرير دفاتر تشغيل PowerShell، التي تستفيد من GitHub Copilot لتبسيط تجربة تأليف دفتر التشغيل.

فشل Start-AzAutomationRunbook مع ظهور رسالة الخطأ "runbookName لا يتطابق مع النمط المتوقع"

المشكلة

عند تشغيل Start-AzAutomationRunbook لبدء تشغيل دفاتر تشغيل معينة:

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

فشل مع الخطأ التالي:

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

السبب

تتحقق التعليمات البرمجية التي تم تقديمها في الإصدار 1.9.0 من الوحدة النمطية Az.Automation من أسماء دفاتر التشغيل لبدء دفاتر التشغيل ووضع علامات غير صحيحة على دفاتر التشغيل ذات الأحرف "-" المتعددة أو مع حرف "_" في الاسم كحرف غير صالح.

الطرق البديلة

نوصي بالرجوع إلى الإصدار 1.8.0 من الوحدة النمطية.

نوع الحل

حاليا، نحن نعمل على نشر إصلاح لمعالجة هذه المشكلة.

تشخيص المشكلات في دفتر التشغيل

عند ظهور أخطاء أثناء تنفيذ دفتر التشغيل في "Azure Automation"، عليك اتباع الخطوات التالية للمساعدة في تشخيص المشكلات:

  1. تأكد من تنفيذ البرنامج النصي لدفتر التشغيل بنجاح على جهازك المحلي.

    للحصول على مرجع اللغة ووحدات التعلم النمطية، راجع مستندات PowerShell أو مستندات Python. يمكن للبرنامج النصي محليًا اكتشاف وحل الأخطاء الشائعة، مثل:

    • وحدات نمطية غير منفذة
    • أخطاء بناء الجملة
    • خطأ منطقي
  2. التحقق من أخطاء عمليات بث دفتر التشغيل.

    انظر إلى عمليات التدفق المستمر لرسائل محددة، ومن ثم قارنها بالأخطاء الموثقة في هذه المقالة.

  3. تأكد من أن العُقد ومساحة العمل التلقائية لديها الوحدات النمطية المطلوبة.

    إذا كان دفتر التشغيل الخاص بك يستورد أية وحدات نمطية، فتحقق من توفرها لحسابك التلقائي متبعًا الخطوات الموجودة في الوحدات النمطية للاستيراد. تحديث الوحدات النمطية PowerShell إلى أحدث إصدار باتباع الإرشادات الموجودة في الوحدات النمطية لـUpdate Azure PowerShell في Azure Automation. لمزيد من المعلومات حول استكشاف الأخطاء وإصلاحها، راجع الوحدات النمطية لاستكشاف الأخطاء وإصلاحها.

  4. إذا توقف دفتر التشغيل مؤقتًا أو فشل بشكل غير متوقع:

  5. قم بهذه الخطوة إذا لم تستجب مهمة دفتر التشغيل أو البيئة على "Hybrid Runbook Worker".

    إذا كنت تقوم بتشغيل دفاتر التشغيل الخاصة بك على Hybrid Runbook Worker بدلًا من التشغيل على Azure Automation، فقد تحتاج إلى استكشاف أخطاء العامل المختلط نفسه وإصلاحها.

السيناريو: غير قادر على إنشاء مهمة أتمتة جديدة في منطقة غرب أوروبا

المشكلة

عند إنشاء مهام التنفيذ التلقائي الجديدة، قد تواجه تأخيرا أو فشلا في إنشاء الوظيفة. سيتم إيقاف المهام المجدولة تلقائيا، ويمكن إيقاف المهام المنفذة من خلال المدخل إذا رأيت فشلا.

السبب

ويرجع ذلك إلى التحميل العالي من دفاتر تشغيل العملاء باستخدام خدمة التنفيذ التلقائي في منطقة غرب أوروبا.

نوع الحل

نفذ الإجراء التالي إذا كان ممكنا وفقا لمتطلباتك وبيئتك لتقليل فرصة الفشل:

  • إذا كنت تستخدم الجزء العلوي من الساعة لإنشاء الوظيفة (في الساعة 12:00 أو 1:00 أو 2:00 وما إلى ذلك)، عادة في الساعة أو نصف الساعة، نوصي بنقل وقت بدء المهمة إلى خمس دقائق قبل الساعة/النصف أو بعدها. وذلك لأن معظم العملاء يستخدمون بداية الساعة لتنفيذ المهمة مما يزيد بشكل كبير من الحمل على الخدمة، بينما يكون الحمل منخفضا نسبيا في الفترات الزمنية الأخرى.

السيناريو: يفشل دفتر التشغيل مع "هذا. لا يمكن أن يكون Client.SubscriptionId خاليا." رسالة الخطأ

المشكلة

دفتر التشغيل الخاص بك باستخدام هوية مدارة الاتصال-AzAccount -Identity الذي يحاول إدارة كائنات Azure، يفشل في العمل بنجاح ويسجل الخطأ التالي -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

السبب

يمكن أن يحدث هذا عندما لا يتم منح الهوية المدارة (أو الحساب الآخر المستخدم في دفتر التشغيل) أي أذونات للوصول إلى الاشتراك.

نوع الحل

امنح الهوية المدارة (أو الحساب الآخر المستخدم في دفتر التشغيل) عضوية دور مناسبة في الاشتراك. معرفة المزيد

 لقطة شاشة تعرض تعيين تعيينات دور Azure.

لقطة شاشة توضح كيفية إضافة تعيين الدور.

السيناريو: تم حظر الوصول إلى تخزين Azure أو Azure Key Vault أو Azure SQL

يستخدم هذا السيناريو تخزين Azure كمثال; ومع ذلك، المعلومات تنطبق على حد سواء إلى Azure Key Vault و Azure SQL.

المشكلة

محاولة الوصول إلى تخزين Azure من دفتر التشغيل ينتج خطأ مشابه للرسالة التالية: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

السبب

تم تمكين Azure Firewall على تخزين Azure.

نوع الحل

تمكين جدار حماية Azure على Azure Storage،Azure Key VaultأوAzure SQL يمنع الوصول من دفاتر تشغيل Azure Automation لتلك الخدمات. سيتم حظر الوصول حتى في حالة تمكين استثناء جدار الحماية للسماح بخدمات Microsoft الموثوق بها، لأن التنفيذ التلقائي ليس جزءًا من قائمة الخدمات الموثوق بها. بتمكين جدار الحماية، يمكن الوصول فقط باستخدام Hybrid Runbook Worker ونقطة نهاية خدمة الشبكة الظاهرية.

السيناريو: فشل دفتر التشغيل بدون وجود إذن أو خطأ 403 ممنوع

المشكلة

فشل دفتر التشغيل الخاص بك مع عدم وجود إذن أو خطأ 403 ممنوع أو ما يكون معادل لها.

السبب

قد لا يكون لدى التشغيل كحسابات نفس الأذونات مقابل موارد Azure مثل حساب Automation الحالي.

نوع الحل

تأكد من أن التشغيل كحساب له أذونات للوصول إلى أي موارد مستخدمة في البرنامج النصي الخاص بك.

السيناريو: فشل تسجيل الدخول إلى حساب Azure

المشكلة

تتلقى أحد الأخطاء التالية عند العمل مع Connect-AzAccountcmdlet:

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

السبب

تحدث هذه الأخطاء إذا كان اسم الأصل لبيانات الاعتماد غير صالح. قد تحدث أيضًا إذا كان اسم المستخدم وكلمة المرور المستخدمين لإعداد أصل بيانات الاعتماد التلقائية غير صالحين.

نوع الحل

لتحديد ما هو الخطأ، اتبع هذه الخطوات:

  1. تأكد من أنك لا تملك أي حروف خاصة. تتضمن هذه الحروف \@ الحرف في اسم أصل بيانات الاعتماد التلقائية الذي تستخدمه للاتصال ب Azure.

  2. تحقق لمعرفة ما إذا كان يمكنك استخدام اسم المستخدم وكلمة المرور المخزنة في بيانات اعتماد Azure Automation في محرر PowerShell ISE المحلي. تشغيل cmdlet التالية الموجودة في ISE PowerShell.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. إذا فشلت المصادقة محليا، فلن تقوم بإعداد بيانات اعتماد Microsoft Entra بشكل صحيح. لإعداد حساب Microsoft Entra بشكل صحيح، راجع المقالة المصادقة على Azure باستخدام معرف Microsoft Entra.

  4. إذا كان الخطأ يبدو عابرا، حاول إضافة منطق إعادة المحاولة إلى روتين المصادقة لجعل المصادقة تكون أكثر قوة.

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

السيناريو: شغل Login-AzureRMAccount لتسجيل الدخول

المشكلة

تستقبل الخطأ التالي عند تشغيل دفتر تشغيل:

Run Login-AzureRMAccount to login.

السبب

يمكن أن يحدث هذا الخطأ عندما لا تستخدم تشغيل كحساب باسم أو انتهاء صلاحية التشغيل كحساب.

يحتوي هذا الخطأ على سببين أساسيين:

  • هناك إصدارات مختلفة من AzureRM أو الوحدة النمطية ل Az.
  • تحاول الوصول إلى موارد في اشتراك منفصل.

نوع الحل

إذا تلقيت هذا الخطأ بعد تحديث وحدة AzureRM أو Az النمطية، قم بتحديث كافة الوحدات النمطية إلى نفس الإصدار.

إذا كنت تحاول الوصول إلى الموارد في اشتراك آخر، اتبع الخطوات التالية لتكوين أذونات:

  1. انتقل إلى حساب التشغيل التلقائي كحساب، وانسخ معرف التطبيقوبصمات الإبهام.

    انسخ معرف التطبيق و بصمة الإبهام

  2. انتقل إلى عنصر التحكم بالوصول الخاص بالاشتراك حيث لا تتم استضافة حساب Automation، ثم أضف تعيين دور جديد.

    عنصر تحكم الوصول

  3. أضف معرف التطبيق الذي تم تجميعه سابقًا. اختر أذونات المساهم.

    إضافة تعيين دور

  4. انسخ اسم الاشتراك.

  5. يمكنك الآن استخدام التعليمات البرمجية لدفتر التشغيل التالي لاختبار الأذونات من الحساب التلقائي الخاص بك إلى الاشتراك الآخر. استبدل <CertificateThumbprint> بالقيمة التي تم نسخها في الخَطوة 1. استبدل "<SubscriptionName>" بالقيمة التي تم نسخها في الخَطوة 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
    }
    

السيناريو: غير قادر على العثور على اشتراك Azure

المشكلة

تستقبل الأخطاء التالية عند العمل مع Select-AzureSubscription,Select-AzureRMSubscriptionأو Select-AzSubscriptioncmdlet:

The subscription named <subscription name> cannot be found.

خطأ

يحدث هذا الخطأ إذا:

  • اسم الاشتراك ليس صالحًا.
  • لم يتم تكوين مستخدم Microsoft Entra الذي يحاول الحصول على تفاصيل الاشتراك كمسؤول عن الاشتراك.
  • الـcmdlet غير متوفر.
  • حدث تبديل للسياق.

نوع الحل

لتبديل السياق، راجع تبديل السياق في Azure Automation.

السيناريو: فشل دفتر التشغيل عند التعامل مع اشتراكات متعددة

المشكلة

عند التنفيذ لدفاتر التشغيل، يفشل دفتر التشغيل في إدارة موارد Azure.

السبب

لا يستخدم دفتر التشغيل السياق الصحيح في مرحلة التشغيل. قد يكون هذا بسبب محاولة دفتر التشغيل بطريق الخطأ الوصول إلى الاشتراك غير الصحيح.

قد تشاهد أخطاء مثل هذا:

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

أو مثل هذا:

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

نوع الحل

لتجنب محاولة الوصول إلى الاشتراك غير الصحيح بطريق الخطأ، راجع تبديل السياق في Azure Automation.

السيناريو: فشل المصادقة إلى Azure بسبب تمكين المصادقة متعددة العوامل

المشكلة

تستقبل الخطأ التالي عند المصادقة على Azure باستخدام اسم مستخدم وكلمة مرور Azure الخاصة بك:

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

السبب

إذا كان لديك مصادقة متعددة العوامل على حساب Azure الخاص بك، فلا يمكنك استخدام مستخدم Microsoft Entra للمصادقة على Azure. بدلًا من ذلك، تحتاج إلى استخدام شهادة أو كيان الخدمة للمصادقة.

نوع الحل

لاستخدام كيان الخدمة مع Azure Resource Manager cmdlet, راجع إنشاء كيان الخدمة باستخدام مدخل Microsoft Azure و المصادقة على كيان الخدمة مع Azure Resource Manager.

السيناريو: فشل دفتر التشغيل مع رسالة خطأ "تم إلغاء المهمة"

المشكلة

فشل دفتر التشغيل الخاص بك بخطأ مشابه للمثال التالي:

Exception: A task was cancelled.

السبب

يمكن أن يحدث هذا الخطأ باستخدام الوحدات النمطية القديمة لـAzure.

نوع الحل

يمكنك حل هذا الخطأ عن طريق تحديث الوحدات النمطية لـAzure إلى أحدث إصدار:

  1. في الحساب التلقائي، حدد «الوحدات النمطية», ثم حدد «تحديث الوحدات النمطية لـ Azure».
  2. يستغرق التحديث 15 دقيقة تقريبًا. بعد الانتهاء من ذلك، أعد تشغيل دفتر التشغيل الذي فشل تشغيله من قبل.

لمعرفة المزيد حول تحديث الوحدات النمطية، راجع تحديث الوحدات النمطية لـAzure في Azure Automation.

السيناريو: مصطلح غير معترف به كاسم أو دالة أو برنامج نصي خاصين بـcmdlet

المشكلة

فشل دفتر التشغيل الخاص بك بخطأ مشابه للمثال التالي:

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.

السبب

يمكن أن يحدث هذا الخطأ لأحد الأسباب التالية:

  • الوحدة النمطية التي تحتوي على cmdlet لا يتم استيرادها إلى الحساب التلقائي.
  • يتم استرداد الوحدة النمطية التي تحتوي على cmdlet ولكن قديمة.

نوع الحل

قم بعمل أحد المهام التالية لحل هذا الخطأ:

السيناريو: فشل Cmdlet في دفتر تشغيل PnP PowerShell على Azure Automation

المشكلة

عندما يكتب دفتر التشغيل عنصر PnP PowerShell-generated إلى مخرج Azure Automation مباشرة، لا يمكن لخرج cmdlet بإرجاع التدفق المستمر مرة أخرى إلى Automation.

السبب

تحدث هذه المشكلة الأكثر شيوعًا عند معالجة دفاتر تشغيل Azure Automation التي تستدعي cmdlet PnP PowerShell, على سبيل المثال، add-pnplistitem، دون ضبط عناصر الإرجاع.

نوع الحل

تحرير البرامج النصية لتعيين أي قيم إرجاع إلى المتغيرات بحيث لا تحاول cmdlet كتابة عناصر كاملة إلى المخرج القياسي. يمكن للبرنامج النصي إعادة توجيه بث المخرج إلى cmdlet، كما هو موضح هنا.

  $null = add-pnplistitem

إذا كان البرنامج النصي الخاص بك يوزع مخرج cmdlet، يجب أن يقوم البرنامج النصي بتخزين المخرج في متغير ومعالجة المتغير بدلًا من بث المخرج ببساطة.

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

السيناريو: لم يتم التعرف على Cmdlet عند تنفيذ دفتر تشغيل

المشكلة

فشلت مهمة دفتر التشغيل الخاص بك بسبب الخطأ:

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

السبب

يحدث هذا الخطأ عندما لا يتمكن محرك PowerShell من العثور على cmdlet الذي تستخدمه في دفتر التشغيل الخاص بك. من الممكن أن الوحدة النمطية التي تحتوي على cmdlet مفقودة من الحساب، أو أن هناك تعارضًا في الاسم مع اسم دفتر التشغيل، أو أن cmdlet موجود أيضا في وحدة نمطية أخرى ولا يمكن للتنفيذ التلقائي حل الاسم.

نوع الحل

استخدم أي من الحلول التالية لإصلاح هذه المشكلة:

  • تأكد من انك أدخلت اسم cmdlet بشكل صحيح.
  • تأكد من وجود cmdlet في الحساب التلقائي الخاص بك وأنه لا توجد تعارضات. للتحقق مما إذا كان cmdlet موجودا، افتح دفتر التشغيل في وضع التحرير وابحث عن cmdlet الذي تريد العثور عليه في المكتبة، أو قم بتشغيل Get-Command <CommandName>. بعد التحقق من أن cmdlet متوفرة للحساب، وأنه لا يوجد تعارضات في الاسم مع cmdlets أو دفاتر التشغيل الأخرى، أضف cmdlet إلى لوحة الكتابة. تأكد من استخدامك لمعلمة صالحة في دفتر التشغيل.
  • إذا كان لديك تعارض اسم و cmdlet متوفر في وحدتين نمطيتين مختلفتين حل المشكلة باستخدام اسم مؤهل بالكامل لـcmdlet. على سبيل المثال، يمكنك استخدام ModuleName\CmdletName.
  • إذا كنت تقوم بتنفيذ دفتر التشغيل المحلي في مجموعة العاملين المختلطين، فتأكد من تثبيت الوحدة النمطية وcmdlet على الجهاز الذي يستضيف العامل المختلط.

السيناريو: مرجع عنصر غير صحيح عند استدعاء Add-AzAccount

المشكلة

تتلقى هذا الخطأ عند العمل مع Add-AzAccount، وهو اسم مستعار لـConnect-AzAccount cmdlet:

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

السبب

يمكن أن يحدث هذا الخطأ إذا لم يقم دفتر التشغيل بالخطوات المناسبة قبل استدعاء Add-AzAccount لإضافة الحساب التلقائي. مثال على إحدى الخطوات الضرورية هو تسجيل الدخول باستخدام كحساب تشغيل. للحصول على العمليات الصحيحة لاستخدامها في دفتر التشغيل الخاص بك، راجع تنفيذ دفتر التشغيل في Azure Automation.

السيناريو: لم يتم جمع مرجع العنصر إلى عنصر مثيل

المشكلة

تستقبل الخطأ التالي عند استدعاء دفتر تشغيل تابع مع Wait المعلمة و تدفق الإنتاج وخرج تدفق الإنتاج يحتوي على عنصر:

Object reference not set to an instance of an object

السبب

إذا كان التدفق المستمر يحتوي على عناصر، Start-AzAutomationRunbookلا يعالج خرج التدفق المستمر بشكل صحيح.

نوع الحل

تطبيق منطق التحقق واستخدام Get-AzAutomationJobOutput cmdlet لاسترداد الخرج. تعرّف عينة من هذا المنطق هنا:

$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

السيناريو: فشل دفتر التشغيل بسبب عنصر إلغاء التسلسل

المشكلة

فشل دفتر التشغيل الخاص بك بالخطأ:

Cannot bind parameter <ParameterName>.

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

السبب

إذا كان سير عمل دفتر التشغيل الخاص بك PowerShell، فإنه يخزن عناصر معقدة بتنسيق غير متسلسل للاستمرار حالة دفتر التشغيل إذا تم تعليق سير العمل.

نوع الحل

يرجى استخدام أي من الحلول التالية لإصلاح هذه المشكلة:

  • إذا كنت تقوم بتوصيل العناصر المعقدة من cmdlet إلى آخر، فلف cmdlets في InlineScript نشاط.
  • تمرير الاسم أو القيمة التي تحتاجها من العنصر المعقد بدلًا من تمرير العنصر بأكمله.
  • استخدم دفتر تشغيل PowerShell بدلًا من دفتر تشغيل سير عمل PowerShell.

السيناريو: 400 حالة طلب غير صالح عند استدعاء إخطار على الويب

المشكلة

عند محاولة استدعاء إخطار على الويب لدفتر تشغيل Azure Automation تستقبل الخطأ التالي:

400 Bad Request : This webhook has expired or is disabled

السبب

الإخطار على الويب الذي تحاول الاتصال به إما معطل أو منتهي الصلاحية.

نوع الحل

إذا تم تعطيل إخطار على الويب يمكنك إعادة تمكينه من خلال مدخل Microsoft Azure. إذا انتهت صلاحية الإخطار على الويب يجب حذفه ثم إعادة إنشائه. يمكنك تجديد إخطار على الويب فقط إذا لم تكن قد انتهت صلاحيتها بالفعل.

السيناريو: 429: معدل الطلب حاليًا كبير جدًا

المشكلة

تظهر رسالة الخطأ التالية عند تشغيلGet-AzAutomationJobOutput cmdlet:

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

السبب

يمكن أن يحدث هذا الخطأ عند استرداد خرج المهمة من دفتر تشغيل يحتوي على العديد من التدفق المستمر المطول.

نوع الحل

قم بعمل أحد الحلول التالية لإصلاح هذا الخطأ:

  • قم بتحرير دفتر التشغيل، وتقليل عدد تدفقات الوظائف التي يصدرها.
  • تقليل أعداد التدفق المستمر التي سيتم استردادها عند تشغيل cmdlet. للقيام بذلك، يمكنك تعيين القيمة Stream المعلمة لـ Get-AzAutomationJobOutputcmdlet لاسترداد تدفقات الإنتاج فقط. ​

السيناريو: فشل مهمة دفتر التشغيل لأنه تم تجاوز الحصة النسبية المخصصة

المشكلة

فشلت مهمة دفتر التشغيل الخاص بك بسبب الخطأ:

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

السبب

يحدث هذا الخطأ عندما يتجاوز تنفيذ المهمة الحصة النسبية 500 دقيقة مجانية لحسابك. تنطبق هذه الحصة النسبية على كافة أنواع وظائف تنفيذ المهام. تقوم بعض هذه الوظائف باختبار مهمة أو بدء مهمة من المدخل أو تنفيذ مهمة باستخدام إخطارات على الويب أو جدولة مهمة لتنفيذها باستخدام إما مدخل Microsoft Azure أو مركز البيانات الخاص بك. لمعرفة المزيد حول التسعير Automation, راجع تسعير Automation .

نوع الحل

إذا كنت ترغب في استخدام أكثر من 500 دقيقة من المعالجة شهريًا، غيّر اشتراكك من المستوى المجاني إلى المستوى الأساسي:

  1. سجل الدخول إلى اشتراك Azure الخاص بك.
  2. حدد حساب Automation للترقية.
  3. حدد «الإعدادات»، ثم حدد «التسعير».
  4. حدد «تمكين» أسفل الصفحة لترقية حسابك إلى المستوى الأساسي.

السيناريو: تدفق إنتاج دفتر التشغيل أكبر من 1 ميغابايت

المشكلة

فشل تشغيل دفتر التشغيل في بيئة الاختبار المعزولة مع الخطأ التالي:

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

السبب

يحدث هذا الخطأ بسبب محاولة دفتر التشغيل الخاص بك لكتابة بيانات استثناء كثيرة جدًا على تدفق الإنتاج.

نوع الحل

هناك حد 1 ميغابايت على مهمة تدفق الإنتاج. تأكد من أن دفتر التشغيل الخاص بك يرفق المكالمات إلى عملية تنفيذية أو فرعية باستخدام trycatch عنصر حظر المستوى. إذا كانت العمليات طرح استثناء، يكون التعليمات البرمجية كتابة الرسالة من الاستثناء إلى متغير Automation. يمنع هذا الأسلوب الرسالة من الكتابة في مهمة تدفق الإنتاج. بالنسبة لوظائف عامل دفتر التشغيل المختلط المنفذة، يتم عرض تدفق الإنتاج الذي تم اقتطاعه إلى 1 ميغابايت بدون رسالة خطأ.

السيناريو: محاولة تشغيل مهمة دفتر التشغيل ثلاث مرات، ولكن فشل بدء التشغيل في كل مرة

المشكلة

فشل دفتر التشغيل الخاص بك بالخطأ التالي:

The job was tried three times but it failed

السبب

هذا الخطأ يحدث بسبب إحدى المشكلات التالية:

  • حد الذاكرة. قد تفشل المهمة إذا تم استخدام أكثر من 400 ميغابايت من الذاكرة. تم العثور على الحدود الموثقة على الذاكرة المخصصة لبيئة الاختبار المعزولة في حدود خدمة Automation.

  • مآخذ توصيل الشبكة. تقتصر بيئة الاختبار المعزولة لـAzure على 1000 مأخذ توصيل للشبكة المتزامنة. لمزيد من المعلومات، راجع حدود خدمة Automation.

  • الوحدة النمطية غير متوافقة. قد تكون تبعيات الوحدة النمطية غير صحيحة. في هذه الحالة، عادة ما يقوم دفتر التشغيل بإرجاع Command not found أو رسالة Cannot bind parameter.

  • لا يتم مصادقة "خدمات مجال Active Directory" لبيئة الاختبار المعزولة. حاول دفتر التشغيل استدعاء عملية فرعية أو تنفيذية تعمل في بيئة الاختبار المعزولة لـAzure. تكوين دفاتر التشغيل للمصادقة مع معرف Microsoft Entra باستخدام مكتبة مصادقة Azure Active Directory (ADAL) غير مدعوم.

نوع الحل

  • حد الذاكرة، مآخذ توصيل الشبكة. الطرق المقترحة للعمل ضمن حدود الذاكرة هي لتقسيم حمل العمل بين عدة دفاتر تشغيل، ومعالجة بيانات أقل في الذاكرة، وتجنب كتابة الخرج غير الضروري من دفاتر التشغيل الخاصة بك، والنظر في عدد نقاط التفتيش التي تتم كتابتها في دفاتر تشغيل سير عمل PowerShell. استخدم أسلوب واضح، مثل $myVar.clear، لمسح المتغيرات واستخدام [GC]::Collect لتشغيل تجميع البيانات المهملة فورًا. تقلل هذه الإجراءات من بصمة الذاكرة في دفتر التشغيل أثناء وقت التشغيل.

  • الوحدة النمطية غير متوافقة. حدث الوحدات النمطية لـAzure باتباع الخطوات في كيفية تحديث الوحدات النمطية لـAzure PowerShell في Azure Automation.

  • لا يتم مصادقة "خدمات مجال Active Directory" لبيئة الاختبار المعزولة. عند المصادقة على معرف Microsoft Entra باستخدام دفتر تشغيل، تأكد من توفر الوحدة النمطية Azure AD في حساب التنفيذ التلقائي الخاص بك. تأكد من منح «التشغيل كحساب» الأذونات الضرورية لتنفيذ المهام التي يقوم دفتر التشغيل بأتمتتها.

    إذا كان دفتر التشغيل لا يتمكن من استدعاء عملية تنفيذية أو فرعية قيد التشغيل في بيئة الاختبار المعزولة لـ Azure، استخدم دفتر التشغيل على عامل تشغيل مختلط. لا يقتصر العاملون المختلطون على حدود الذاكرة والشبكة التي تمتلكها بيئة الاختبار المعزولة لـ Azure.

السيناريو: فشل مهمة PowerShell مع رسالة الخطأ "لا يمكن استدعاء الأسلوب"

المشكلة

تستقبل رسالة الخطأ التالية عند بدء تشغيل مهمة PowerShell في دفتر تشغيل يعمل في Azure:

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

السبب

قد يشير هذا الخطأ إلى أنه لا يمكن تشغيل دفاتر التشغيل التي يتم تشغيلها في بيئة الاختبار المعزولة لـAzure في وضع اللغة الكاملة.

نوع الحل

يوجد طريقتان لحل هذا الخطأ:

لمعرفة المزيد حول هذا السلوك والسلوكيات الأخرى من دفاتر تشغيل Azure Automation، راجع تنفيذ دفتر التشغيل في Azure Automation.

السيناريو: فشل إكمال التشغيل طويل الأمد لدفتر التشغيل

المشكلة

يظهر دفتر التشغيل الخاص بك في حالة الإيقاف بعد تشغيله لمدة ثلاث ساعات. قد تستقبل أيضًا هذا الخطأ:

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

هذا السلوك حسب التصميم في بيئة الاختبار المعزولة لـAzure بسبب مراقبة المشاركة العادلة للعمليات داخل Azure Automation. إذا استغرق تنفيذ عملية ما أكثر من ثلاث ساعات، فإن المشاركة العادلة توقف تلقائيا دفتر التشغيل. ًتختلف حالة دفتر التشغيل الذي يتجاوز الحد الزمني للمشاركة العادلة على حسب نوع دفتر التشغيل. يتم تعيين PowerShell ودفتر تشغيل Python إلى حالة التوقف. يتم تعيين دفاتر تشغيل سير عمل PowerShell إلى حالة فاشلة.

السبب

تجاوز دفتر التشغيل الحد الأقصى البالغ ثلاث ساعات المسموح به من خلال المشاركة العادلة في بيئة الاختبار المعزولة لـAzure.

نوع الحل

أحد الحلول الموصى بها هو تشغيل دفتر التشغيل على «Hybrid Runbook Worker». لا يقتصر عمال Hybrid من قبل الحد الأقصى للمشاركة العادلة لمدة الثلاث ساعات التي تحتوي عليها بيئات الاختبار المعزولة لـAzure. يجب تطوير دفاتر التشغيل التي تعمل على "Hybrid Runbook Workers " لدعم سلوكيات إعادة التشغيل إذا كانت هناك مشكلات غير متوقعة في البنية الأساسية المحلية.

حل آخر هو تحسين دفتر التشغيل عن طريق إنشاء دفاتر التشغيل التابعة. إذا كان تكرار حلقات دفتر التشغيل خلال نفس الدالة على عدة موارد، على سبيل المثال، في عملية قاعدة البيانات يمكنك نقل الدالة إلى دفتر التشغيل التابع على عدة قواعد بيانات. يتم تنفيذ كل دفتر تشغيل تابع بالتوازي في عملية منفصلة. يقلل هذا السلوك مقدار الوقت الإجمالي لإكمال أصل دفتر التشغيل.

The PowerShell cmdlets التي تمكن سيناريو دفتر التشغيل التابع هي:

  • Start-AzAutomationRunbook. يسمح لك cmdlet ببدء تشغيل دفتر التشغيل وتمرير المعلمات إليه.
  • Get-AzAutomationJob. إذا كانت هناك عمليات تحتاج إلى تنفيذ بعد اكتمال دفتر التشغيل التابع، فإن cmdlet يسمح لك بالتحقق من حالة الوظيفة لكل تابع.

السيناريو: خطأ في تدفقات المهمة حول أسلوب «get_SerializationSettings»

المشكلة

راجع الخطأ التالي لتدفقات المهمة في دفتر تشغيل:

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

السبب

ربما يكون سبب هذا الخطأ استخدام ترحيل غير كامل من «AzureRM» إلى «Az» الوحدات النمطية في دفتر التشغيل الخاص بك. يمكن بسبب هذا الموقف أن تبدأ Azure Automation مهمة دفتر التشغيل باستخدام الوحدات النمطية «AzureRM» فقط, ثم بتشغيل مهمة أخرى باستخدام الوحدات النمطية «Az» فقط، مما يؤدي إلى تعطل بيئة الاختبار المعزولة.

نوع الحل

لا نوصي باستخدام «Az» و«AzureRM cmdlet» في نفس دفتر التشغيل. لمعرفة المزيد حول الاستخدام الصحيح للوحدات النمطية، راجع ترحيل الوحدات النمطية «Az».

السيناريو: رفض الوصول عند استخدام بيئة الاختبار المعزولة لـAzure في دفتر التشغيل أو التطبيق

المشكلة

عند محاولة تشغيل دفتر التشغيل أو التطبيق في بيئة الاختبار المعزولة لـAzure، تمنع البيئة الوصول.

السبب

يمكن أن تحدث هذه المشكلة لأن بيئة الاختبار المعزولة لـAzure تمنع الوصول إلى كافة خوادم COM خارج العملية. على سبيل المثال، لا يمكن استدعاء تطبيق في وضع الحماية أو دفتر تشغيل إلى «Windows Management Instrumentation » (WMI) أو إلى خدمة «Windows Installer» (msiserver.exe).

نوع الحل

للحصول على تفاصيل حول استخدام بيئة الاختبار المعزولة لـAzure، راجع بيئة تنفيذ دفتر التنفيذ.

السيناريو: حظر حالة التعليمة البرمجية الغير صالحة عند استخدام Azure Key Vault داخل دفتر تشغيل

المشكلة

عند محاولة الوصول إلى Azure Key Vault من خلال دفتر تشغيل Azure Automation، تحصل على الخطأ التالي:

Operation returned an invalid status code 'Forbidden'

السبب

الأسباب المحتملة لهذه المشكلة:

  • عدم استخدام التشغيل كحساب.
  • الأذونات الغير كافية.

نوع الحل

عدم استخدام التشغيل كحساب

اتبع الخطوة 5 - إضافة مصادقة لإدارة موارد Azure لضمان استخدام التشغيل كحساب للوصول إلى Azure Key Vault.

الأذونات الغير كافية

أضف أذونات إلى Azure Key Vault لضمان أن التشغيل كحساب لديه أذونات كافية للوصول إلى Azure Key Vault.

السيناريو: فشل دفتر التشغيل مع خطأ "تجاوز طول المعلمة"

المشكلة

يستخدم دفتر التشغيل المعلمات ويفشل مع الخطأ التالي:

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.

السبب

هناك حد لإجمالي طول الأحرف لجميع المعلمات التي يمكن توفيرها في دفاتر تشغيل Python 2.7 وPython 3.8 وPowerShell 7.1. يجب ألا يتجاوز الطول الإجمالي لكافة أسماء المعلمات وقيم المعلمات 30000 حرف.

نوع الحل

للتغلب على هذه المشكلة، يمكنك استخدام Azure Automation Variables لتمرير القيم إلى دفتر التشغيل. يمكنك بدلا من ذلك تقليل عدد الأحرف في أسماء المعلمات وقيم المعلمات للتأكد من أن الطول الإجمالي لا يتجاوز 30000 حرف.

الخطوات التالية

إذا لم تشاهد مشكلتك هنا أو لم تتمكن من حلها، فجرب إحدى القنوات التالية للحصول على مزيد من الدعم:

  • احصل على إجابات من الخبراء في Azure من خلال منتديات Azure.
  • تواصل مع @AzureSupport، حساب Microsoft Azure الرسمي لتحسين التجربة الخاصة بالعملاء. يدعم Azure تعييناتك بمجتمع Azure للحصول على إجابات ودعم وخبراء.
  • إذا كنت بحاجة إلى مزيد من المساعدة، يمكنك تقديم حدث دعم Azure. انتقل إلى «موقع دعم Azure»، وحدد «Get Support».