إدارة دلائل التشغيل في Azure Automation

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

إنشاء دفتر تشغيل

إنشاء دليل تشغيل جديد في Azure Automation باستخدام مدخل Microsoft Azure أو PowerShell. بمجرد إنشاء دليل التشغيل، يمكنك تحريره باستخدام المعلومات في:

إنشاء دليل تشغيل في مدخل Microsoft Azure

  1. قم بتسجيل الدخول إلى بوابة Azure.
  2. ابحث عن حسابات Automation وحددها.
  3. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  4. من حساب التنفيذ التلقائي، حدد «كتب التشغيل»في «العمليات التلقائية» لفتح قائمة دلائل التشغيل.
  5. انقر فوق «إنشاء دفتر تشغيل».
    1. قم بتسمية دفتر التشغيل.
    2. من القائمة المتوقفة عن التشغيلنوع دليل التشغيل. حدد «نوعها». يجب أن يبدأ اسم دليل التشغيل بحرف ويمكن أن يحتوي على أحرف وأرقام وشرطات سفلية وشرطات
    3. حدد«إصدار وقت التشغيل»
    4. أدخل الوصف المعمول به
  6. انقر فوق«إنشاء»لإنشاء دليل التشغيل.

إنشاء دليل تشغيل باستخدام PowerShell

استخدمNew-AzAutomationRunbookcmdlet لإنشاء دليل تشغيل فارغ. استخدمTypeالمعلمة لتحديد واحدة من أنواع دليل التشغيل المعرفة لNew-AzAutomationRunbook.

يوضح المثال أدناه كيفية إنشاء دليل تشغيل فارغ جديد.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    Name                  = 'NewRunbook'
    ResourceGroupName     = 'MyResourceGroup'
    Type                  = 'PowerShell'
}
New-AzAutomationRunbook @params

استيراد دليل تشغيل

يمكنك استيراد PowerShell أو PowerShell Workflow (.ps1) النصي، كتاب تشغيل الرسومات (.graphrunbook) أو البرنامج النصي لـ Python 2 أو Python 3(.py) لتكوين كتاب التشغيل خاصتك. يمكنك تحديد نوع دليل التشغيلالذي تم إنشاؤها أثناء الاستيراد، مع مراعاة الاعتبارات التالية.

  • يمكنك استيراد ملف.ps1لا يحتوي على workflow إلىدليل تشغيل PowerShellأو دليل تشغيل PowerShell workflow. إذا قمت باستيراده إلى دليل تشغيل PowerShell Workflow، يتم تحويله إلى workflow. في هذه الحالة، يتم تضمين التعليقات في دليل التشغيل لوصف التغييرات التي تم إجراؤها.

  • يمكنك استيراد ملف.ps1يحتوي على Workflow PowerShell فقط إلىكتاب تشغيل PowerShell Workflow. إذا كان الملف يحتوي على العديد من PowerShell workflows في هذه الحالة يفشل الاستيراد. يجب حفظ كل workflow إلى ملفه الخاص واستيراد كل منها على حدة.

  • لا تقم باستيراد ملف.ps1يحتوي على PowerShell Workflow إلىدليل تشغيل PowerShell، حيث لا يمكن لمشغل البرنامج النصي PowerShell التعرف عليه.

  • استيراد ملف.graphrunbookفقط إلىكتاب تشغيل رسومات جديد.

استيراد دليل تشغيل من مدخل Microsoft Azure

يمكنك استخدام الإجراء التالي لاستيراد ملف برنامج نصي إلى Azure Automation.

إشعار

يمكنك فقط استيراد ملف.ps1إلى دليل تشغيل PowerShell Workflow باستخدام المدخل.

  1. في مدخل Microsoft Azure، ابحث عن⁧ ⁩الحسابات التلقائية⁧⁩ وحددها.
  2. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  3. من حساب التنفيذ التلقائي، حدد «كتب التشغيل»في «العمليات التلقائية» لفتح قائمة دلائل التشغيل.
  4. انقر فوق استيراد دليل تشغيل. يمكنك تحديد أي من الخيارات التالية:
    1. استعراض من الملف - يمكنك تحديد ملف من الكمبيوتر المحلي.
    2. استعرض من المعرض-يمكنك استعراض وتحديد دليل التشغيل الحالي من المعرض.
  5. حدد الملف.
  6. إذا تم تمكين الحقل اسم لديك خيار تغيير اسم دليل التشغيل. يجب أن يبدأ الاسم بحرف ويمكن أن يحتوي على أحرف وأرقام وشرطة سفلية وشرطات.
  7. يتم ملءنوع دليل التشغيلتلقائيا، ولكن يمكنك تغيير النوع بعد أخذ القيود المطبقة في الاعتبار.
  8. إصدار وقت التشغيلهو إما تعبئة تلقائية أو اختيار الإصدار من القائمة المتوقفة عن التشغيل.
  9. انقر فوق استيراد. يظهر دليل التشغيل الجديد في قائمة دلائل التشغيل لحساب التنفيذ التلقائي.
  10. يجب عليكنشر دليل التشغيلقبل أن تتمكن من تشغيله.

إشعار

بعد استيراد دليل تشغيل رسومي، يمكنك تحويله إلى نوع آخر. ومع ذلك، لا يمكنك تحويل دليل تشغيل رسومي إلى دليل تشغيل نصي.

استيراد دليل تشغيل باستخدام PowerShell

استخدمImport-AzAutomationRunbookcmdlet لاستيراد ملف البرنامج النصي كمسودة دليل تشغيل. إذا كان دليل التشغيل موجودا بالفعل، يفشل الاستيراد إلا إذا كنت تستخدمForceالمعلمة مع cmdlet.

يوضح المثال التالي كيفية استيراد ملف برنامج نصي إلى دليل تشغيل.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    Name                  = 'Sample_TestRunbook'
    ResourceGroupName     = 'MyResourceGroup'
    Type                  = 'PowerShell'
    Path                  = 'C:\Runbooks\Sample_TestRunbook.ps1'
}
Import-AzAutomationRunbook @params

مؤشرات الموارد

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

$vmName = 'WindowsVM1'
$rgName = 'MyResourceGroup'
$myCred = Get-AutomationPSCredential 'MyCredential'

$vmExists = Get-AzResource -Name $vmName -ResourceGroupName $rgName
if (-not $vmExists) {
    Write-Output "VM $vmName does not exist, creating"
    New-AzVM -Name $vmName -ResourceGroupName $rgName -Credential $myCred
} else {
    Write-Output "VM $vmName already exists, skipping"
}

استرداد التفاصيل من سجل الفاعلية

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

$rgName = 'MyResourceGroup'
$accountName = 'MyAutomationAccount'
$runbookName = 'MyRunbook'
$startTime = (Get-Date).AddDays(-1)

$params = @{
    ResourceGroupName = $rgName
    StartTime         = $startTime
}
$JobActivityLogs = (Get-AzLog @params).Where( { $_.Authorization.Action -eq 'Microsoft.Automation/automationAccounts/jobs/write' })

$JobInfo = @{}
foreach ($log in $JobActivityLogs) {
    # Get job resource
    $JobResource = Get-AzResource -ResourceId $log.ResourceId

    if ($null -eq $JobInfo[$log.SubmissionTimestamp] -and $JobResource.Properties.Runbook.Name -eq $runbookName) {
        # Get runbook
        $jobParams = @{
            ResourceGroupName     = $rgName
            AutomationAccountName = $accountName
            Id                    = $JobResource.Properties.JobId
        }
        $Runbook = Get-AzAutomationJob @jobParams | Where-Object RunbookName -EQ $runbookName

        # Add job information to hashtable
        $JobInfo.Add($log.SubmissionTimestamp, @($Runbook.RunbookName, $Log.Caller, $JobResource.Properties.jobId))
    }
}
$JobInfo.GetEnumerator() | Sort-Object Key -Descending | Select-Object -First 1

تعقب التقدم

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

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

الحول دون الوظائف المتزامنة

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

# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process

# Connect to Azure with system-assigned managed identity 
$AzureContext = (Connect-AzAccount -Identity).context

# set and store context 
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

# Check for already running or new runbooks 
$runbookName = "runbookName" 
$resourceGroupName = "resourceGroupName" 
$automationAccountName = "automationAccountName"

$jobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName -RunbookName $runbookName -DefaultProfile $AzureContext

# Ranking all the active jobs
$activeJobs = $jobs | where {$_.status -eq 'Running' -or $_.status -eq 'Queued' -or $_.status -eq 'New' -or $_.status -eq 'Activating' -or $_.status -eq 'Resuming'} | Sort-Object -Property CreationTime 
$jobRanking = @() 
$rank = 0 
ForEach($activeJob in $activeJobs) 
{         
    $rank = $rank + 1 
    $activeJob | Add-Member -MemberType NoteProperty -Name jobRanking -Value $rank -Force 
    $jobRanking += $activeJob 
}
    
$AutomationJobId = $PSPrivateMetadata.JobId.Guid 
$currentJob = $activeJobs | where {$_.JobId -eq $AutomationJobId} 
$currentJobRank = $currentJob.jobRanking 

# Only allow the Job with Rank = 1 to start processing. 
If($currentJobRank -ne "1") 
{ 
    Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check failed as Current Job Ranking is not 1 but $($currentJobRank) therefore exiting..." 
    Exit 
} Else
{
    Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check passed. Start processing.." 
} 

إذا كنت تريد تشغيل دفتر التشغيل للتنفيذ مع هوية مدارة معينة من قِبل النظام، اترك التعليمات البرمجية كما هي. إذا كنت تفضل استخدام الهوية المدارة المعينة من قِبل المستخدم، بعد ذلك:

  1. من الخط 5، قم بإزالة$AzureContext = (Connect-AzAccount -Identity).context،
  2. استبدله بـ $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context، و
  3. أدرج معرّف العميل.

إشعار

بالنسبة لوظائف PowerShell 7.2 المختلطة، قم بإجراء تغييرات في السطر 28. استبدل $PSPrivateMetadata.JobId.Guid بـ $env:PSPrivateMetaData.

مؤشر الأخطاء سريعة الزوال في برنامج نصي يعتمد على الوقت

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

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

إشعار

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

منطق إعادة المحاولة في دفتر التشغيل لتجنب حالات الفشل العابرة

غالبا ما تجري دفاتر التشغيل مكالمات إلى الأنظمة البعيدة مثل Azure عبر ARM وAzure Resource Graph وخدمات SQL وخدمات الويب الأخرى. عندما يكون النظام الذي تستدعيه دفاتر التشغيل مشغولا أو غير متوفر مؤقتا أو ينفذ التقييد تحت الحمل، تكون المكالمات عرضة لأخطاء وقت التشغيل. لإنشاء مرونة في دفاتر التشغيل، يجب تنفيذ منطق إعادة المحاولة عند إجراء الاستدعاءات بحيث يمكن لدفاتر التشغيل معالجة مشكلة عابرة دون فشل.

لمزيد من المعلومات، راجع نمط إعادة المحاولة وإرشادات REST العامة وإعادة المحاولة.

مثال 1: إذا كان دفتر التشغيل الخاص بك يقوم بإجراء استدعاء واحد أو اتصالين فقط

$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName  $searchServiceName -ApiVersion 2015-08-19
$searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey

عند استدعاء Invoke-AzureRmResourceAction، قد تلاحظ حالات فشل عابرة. في مثل هذا السيناريو، نوصي بتنفيذ النمط الأساسي التالي حول استدعاء cmdlet.

$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName  $searchServiceName -ApiVersion 2015-08-19

    # Adding in a retry
    $Stoploop = $false
    $Retrycount = 0
 
    do {
        try   {
               $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey
               write-verbose "Invoke-AzureRmResourceAction on $resource.ResourceId completed"
               $Stoploop = $true
              }
        catch {
               if ($Retrycount -gt 3)
                 {
                  Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId after 3 retrys."
                  $Stoploop = $true
                 }
               else  
                 {
                  Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId retrying in 30 seconds..."
                  Start-Sleep -Seconds 30
                  $Retrycount = $Retrycount + 1
                 }
               }
        }
    While ($Stoploop -eq $false)

إشعار

محاولة إعادة محاولة المكالمة تصل إلى ثلاث مرات، وهي نائمة لمدة 30 ثانية في كل مرة.

مثال 2: إذا كان دفتر التشغيل يجري مكالمات متكررة عن بعد

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

Function ResilientRemoteCall {

         param(
               $scriptblock
               )
        
         $Stoploop = $false
         $Retrycount = 0
 
         do {
             try   {
                    Invoke-Command -scriptblock $scriptblock 
                    write-verbose "Invoked $scriptblock completed"
                    $Stoploop = $true
                   }
             catch {
                    if ($Retrycount -gt 3)
                      {
                       Write-verbose "Invoked $scriptblock failed 3 times and we will not try again."
                       $Stoploop = $true
                      }
                    else  
                      {
                       Write-verbose "Invoked $scriptblock failed  retrying in 30 seconds..."
                       Start-Sleep -Seconds 30
                       $Retrycount = $Retrycount + 1
                      }
                    }
             }
         While ($Stoploop -eq $false)
}

يمكنك بعد ذلك تمرير كل استدعاء عن بعد إلى الدالة ك

ResilientRemoteCall { Get-AzVm }
أو

ResilientRemoteCall { $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey}

العمل مع اشتراكات عديدة

يجب أن يكون دليل التشغيل الخاص بك قادرًا على العمل معالاشتراكات. على سبيل المثال، للتعامل مع اشتراكات عديدة، يستخدم دليل التشغيل Disable-AzContextAutosavecmdlet. يضمن cmdlet أن سياق المصادقة لا يتم استردادها من دليل تشغيل آخر قيد التشغيل في نفس بيئة الاختبار المعزولة.

# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process

# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context

# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
    -DefaultProfile $AzureContext

$childRunbookName = 'childRunbookDemo'
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"

$startParams = @{
    ResourceGroupName     = $resourceGroupName
    AutomationAccountName = $automationAccountName
    Name                  = $childRunbookName
    DefaultProfile        = $AzureContext
}
Start-AzAutomationRunbook @startParams

إذا كنت تريد تشغيل دفتر التشغيل للتنفيذ مع هوية مدارة معينة من قِبل النظام، اترك التعليمات البرمجية كما هي. إذا كنت تفضل استخدام الهوية المدارة المعينة من قِبل المستخدم، بعد ذلك:

  1. من الخط 5، قم بإزالة$AzureContext = (Connect-AzAccount -Identity).context،
  2. استبدله بـ $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context، و
  3. أدرج معرّف العميل.

العمل ببرنامج نصي مخصص

إشعار

لا يمكنك عادة تشغيل البرامج النصية المخصصة ودلائل التشغيل على المضيف مع عامل Log Analytics المثبت.

لاستعمال برنامج نصي مخصص:

  1. إنشاء حساب تلقائي.
  2. استخدام قاعدةعامل دليل التشغيل الهجين.
  3. إذا كان على جهاز Linux، فتحتاج إلى امتيازات سامية. تسجيل الدخوللإيقاف تشغيل عمليات فحص التوقيع.

اختبار دفتر تشغيل

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

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

إشعار

يتم تسجيل جميع إجراءات تنفيذ دفتر التشغيل في سجل النشاط لحساب التنفيذ التلقائي باسم العملية إنشاء مهمة Azure Automation. ومع ذلك، سيتم تسجيل تنفيذ دفتر التشغيل في جزء اختبار حيث يتم تنفيذ إصدار مسودة دفتر التشغيل في سجلات النشاط باسم العملية كتابة مسودة دفتر تشغيل Azure Automation. حدد علامة التبويب Operation وJSON لمشاهدة النطاق الذي ينتهي ب .. /runbooks/(runbook name)/draft/testjob.

الإجراء لاختبار لكل مننوع من أنواع دليل التشغيلهو نفسه. لا يوجد فرق في الاختبار بين المحرر النصي والمحرر الرسومي في مدخل Microsoft Azure.

  1. افتح إصدار المسودة من دليل التشغيل إما فيمحرر النصأومحرر الرسومية.
  2. انقر فوق اختبار لفتح صفحة الاختبار.
  3. إذا كان دليل التشغيل يحتوي على معلمات، يتم سردها في الجزء الأيسر، حيث يمكنك توفير القيم لاستخدامها للاختبار.
  4. إذا كنت ترغب في تشغيل الاختبار علىعامل دليل التشغيل الهجين، قم بتغييرإعدادات التشغيلإلى"عامل هجين" وحدد اسم المجموعة المستهدفة. وبشكل آخر، الاحتفاظ بـAzure الافتراضي لتشغيل الاختبار في مجموعة شبكة النظير.
  5. انقر فوق"ابدأ"لبدء الاختبار.
  6. يمكنك استخدام الأزرار الموجودة أسفل جزءالإخراجلإيقاف أو إيقاف مؤقت لـPowerShell Workflowأودفتر التشغيل الرسوميأو دليل التشغيل أثناء اختباره. عند توقف دليل التشغيل مؤقتاً، فإنه يكمل النشاط الحالي قبل أن يتم إيقافه مؤقتاً. بمجرد إيقاف تشغيل المؤقت لدليل التشغيل، يمكنك إيقافه أو إعادة تشغيله.
  7. تفقد الإخراج من دليل التشغيل في جزءالإخراج.

نشر دليل التشغيل

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

نشر دليل التشغيل في مدخل Microsoft Azure

  1. في مدخل Microsoft Azure، ابحث عن⁧ ⁩الحسابات التلقائية⁧⁩ وحددها.
  2. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  3. افتح دليل التشغيل في حساب التنفيذ التلقائي الخاص بك.
  4. انقر فوق تحرير.
  5. انقر فوقنشرومن ثم حددنعمرداً على رسالة التحقق.

نشر دليل تشغيل باستخدام PowerShell

استخدم cmdletPublish-AzAutomationRunbook لنشر دليل التشغيل الخاص بك.

$accountName = "MyAutomationAccount"
$runbookName = "Sample_TestRunbook"
$rgName = "MyResourceGroup"

$publishParams = @{
    AutomationAccountName = $accountName
    ResourceGroupName     = $rgName
    Name                  = $runbookName
}
Publish-AzAutomationRunbook @publishParams

جدولة دفتر تشغيل في مدخل Microsoft Azure

عند نشر دليل التشغيل الخاص بك، يمكنك جدولته للعملية:

  1. في مدخل Microsoft Azure، ابحث عن⁧ ⁩الحسابات التلقائية⁧⁩ وحددها.
  2. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  3. حدد دليل التشغيل من قائمة دلائل التشغيل.
  4. حدد«جداول»ضمنالموارد.
  5. حدد إضافة جدول.
  6. في جزءجدولة دليل التشغيلحددربط الجدول بدليل التشغيل الخاص بك.
  7. اختر إنشاء جدول جديد في جزء الجدولة.
  8. أدخل اسما ووصفا ومعلمات أخرى في جزء «الجدولة الجديدة».
  9. بمجرد إنشاء الجدول، قم بتمييزه وانقر فوقموافق. وينبغي الآن أن تكون مرتبطة بدليل التشغيل الخاص بك.
  10. ابحث عن بريد إلكتروني في صندوق البريد لإعلامك بحالة دليل التشغيل.

استعادة دفتر التشغيل المحذوف

يمكنك استرداد دفتر تشغيل محذوف من خلال البرامج النصية PowerShell. لاسترداد دفتر تشغيل، تأكد من استيفاء الشروط التالية:

  • تم حذف دفاتر التشغيل المراد استعادتها في الأيام ال 29 الماضية.
  • يوجد حساب التنفيذ التلقائي لدفتر التشغيل هذا.
  • يتم منح إذن دور المساهم في التنفيذ التلقائي إلى الهوية المدارة المعينة من قبل النظام لحساب التنفيذ التلقائي.

البرنامج النصي لـ PowerShell:

  • تنفيذ البرنامج النصي PowerShell كوظيفة في حساب التنفيذ التلقائي لاستعادة دفاتر التشغيل المحذوفة.
  • قم بتنزيل البرنامج النصي PowerShell من GitHub. بدلا من ذلك، يمكنك استيراد البرنامج النصي PowerShell المسمى Restore Automation runbook من Runbook Gallery. قم بتوفير اسم دفتر التشغيل الذي سيتم استعادته وتشغيله كوظيفة في Azure Automation لاستعادة دفاتر التشغيل المحذوفة.
  • قم بتنزيل البرنامج النصي من GitHub أو قم باستيراد برنامج PowerShell النصي المسمى List Deleted Automation Runbook من Runbook Gallery، لتحديد أسماء دفاتر التشغيل التي تم حذفها في آخر 29 يوما.

تحقيق حالات وظيفية

عرض الحالات في مدخل Microsoft Azure

يتم توفير تفاصيل معالجة الوظائف في Azure Automation فيالوظائف. عندما تكون مستعدا لرؤية وظائف دليل التشغيل، استخدم مدخل Microsoft Azure والوصول إلى حساب التنفيذ التلقائي. على اليمين، يمكنك رؤية ملخص لكافة وظائف دليل التشغيل في"إحصاءات الوظائف".

صورة مصغرة من خريطة إحصائيات الوظيفة

يعرض الملخص إحصاء وتمثيًلا رسوميًا لحالة الوظيفة لكل مهمة تم تنفيذها.

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

لقطة شاشة لصفحة الوظائف.

يمكنك تصفية قائمة الوظائف عن خلال تحديد «تصفية الوظائف». تصفية على دليل تشغيل معين أو حالة الوظيفة أو اختيار من القائمة المتوقفة عن التشغيل، وتوفير النطاق الزمني للبحث.

تصفية حالة الوظيفة

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

لقطة شاشة لصفحة الوظائف مع إبراز زر الأخطاء.

يمكن استرداد حالات الوظائف باستخدام PowerShell

استخدم cmdletGet-AzAutomationJobلاسترداد الوظائف التي تم إنشاؤها لدليل تشغيل وتفاصيل مهمة معينة. إذا قمت بتشغيل دليل تشغيل باستخدام Start-AzAutomationRunbook، فإنه يعيد الوظائف الناتجة. استخدم Get-AzAutomationJobOutput لاسترداد مخرجات الوظيفة.

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

$getJobParams = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName     = 'MyResourceGroup'
    Runbookname           = 'Test-Runbook'
}
$job = (Get-AzAutomationJob @getJobParams | Sort-Object LastModifiedDate -Desc)[0]
$job | Select-Object JobId, Status, JobParameters

$getOutputParams = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName     = 'MyResourceGroup'
    Id                    = $job.JobId
    Stream                = 'Output'
}
Get-AzAutomationJobOutput @getOutputParams

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

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName     = 'MyResourceGroup'
    Stream                = 'Any'
}
$output = Get-AzAutomationJobOutput @params

foreach ($item in $output) {
    $jobOutParams = @{
        AutomationAccountName = 'MyAutomationAccount'
        ResourceGroupName     = 'MyResourceGroup'
        Id                    = $item.StreamRecordId
    }
    $fullRecord = Get-AzAutomationJobOutputRecord @jobOutParams

    if ($fullRecord.Type -eq 'Error') {
        $fullRecord.Value.Exception
    } else {
        $fullRecord.Value
    }
}

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