إدارة الوحدات في أتمتة Azure

يستخدم Azure Automation عددًا من وحدات PowerShell النمطية لتمكين أوامر cmdlets في دلائل التشغيل وموارد DSC في تكوينات DSC. تتضمن الوحدات النمطية المدعومة ما يلي:

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

بيئات الاختبار المعزولة

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

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

نظرًا إلى عدد الوحدات النمطية وأوامر cmdlets المضمنة، من الصعب معرفة أي من أوامر cmdlets ستجري مكالمات غير مدعومة مسبقًا. بوجه عام، لقد لاحظنا مشكلات في أوامر cmdlets التي تتطلب وصولاً مرتفعًا، أو تتطلب بيانات اعتماد كمعلمة، أو أوامر cmdlets المتعلقة بالشبكات. لا يتم دعم أي أوامر cmdlets تؤدي عمليات شبكة مكدس كاملة في وضع الحماية، بما في ذلك Connect-AipService من وحدة AIPService PowerShell وResolve-DnsName من الوحدة النمطية DNSClient.

هذه هي القيود المعروفة مع بيئة الاختبار المعزولة. الحل الموصى به هو نشر Hybrid Runbook Worker أو استخدام وظائف Azure.

هام

لا تقم بتضمين الكلمة الأساسية "AzureRm" في أي برنامج نصي مُصمم ليتم تنفيذه مع الوحدة Az. قد يؤدي تضمين الكلمة الأساسية، حتى في تعليق، إلى تحميل AzureRm ومن ثم تعارضه مع الوحدة النمطية Az.

الوحدات النمطية الافتراضية

تحتوي جميع حسابات "Automation" الجديدة على أحدث إصدار من الوحدة النمطية PowerShell Az يتم استيرادها افتراضيًا. تحل الوحدة النمطية Az محل AzureRM وهي الوحدة النمطية الموصى باستخدامها مع Azure. تتضمن الوحدات النمطية الافتراضية في حساب Automation الجديد 24 وحدة AzureRM النمطية وأكثر من 60 وحدة نمطية من Azure.

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

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

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

على سبيل المثال: إذا كنت قد استوردت بالفعل الوحدة النمطية Az.Aks بالإصدار 2.3.0 الذي توفره الوحدة النمطية Az 6.3.0 وحاولت تحديث الوحدة النمطية Az إلى أحدث إصدار 6.4.0. ستقوم عملية التحديث باستيراد كافة الوحدات النمطية لـ Az من الحزمة 6.4.0، فيما عدا Az.Aks. للحصول على أحدث إصدار من Az.Aks، احذف أولاً الوحدة النمطية الموجودة ثم قم بإجراء عملية التحديث، أو يمكنك أيضًا تحديث هذه الوحدة النمطية بشكل منفصل كما هو موضح في استيراد وحدات نمطية Az لاستيراد إصدار مختلف من وحدة نمطية معينة.

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

تُعرف الوحدات الافتراضية أيضًا بالوحدات النمطية العمومية. في مدخل Microsoft Azure، ستكون خاصية الوحدة النمطية العموميةصحيحة عند عرض وحدة نمطية تم استيرادها عند إنشاء الحساب.

Screenshot of global module property in Azure Portal

إشعار

لا نوصي بتغيير الوحدات النمطية ودلائل التشغيل في حسابات Automation المستخدمة لنشر Start / Stop VMs خلال ميزة خارج ساعات العمل.

اسم الوحدة النمطية ‏‏الإصدار
Az.* شاهد القائمة الكاملة ضمن تفاصيل الحزمة في معرض PowerShell
AuditPolicyDsc 1.1.0.0
Azure 1.0.3
Azure.Storage 1.0.3
AzureRM.Automation 1.0.3
AzureRM.Compute 1.2.1
AzureRM.Profile 1.0.3
AzureRM.Resources 1.0.3
AzureRM.Sql 1.0.3
AzureRM.Storage 1.0.3
ComputerManagementDsc 5.0.0.0
GPRegistryPolicyParser 0.2
Microsoft.PowerShell.Core 0
Microsoft.PowerShell.Diagnostics
Microsoft.PowerShell.Management
Microsoft.PowerShell.Security
Microsoft.PowerShell.Utility
Microsoft.WSMan.Management
Orchestrator.AssetManagement.Cmdlets 1
PSDscResources 2.9.0.0
SecurityPolicyDsc 2.1.0.0
StateConfigCompositeResources 1
xDSCDomainjoin 1.1
xPowerShellExecutionPolicy 1.1.0.0
xRemoteDesktopAdmin 1.1.0.0

Internal cmdlets

يدعم Azure Automation أوامر cmdlets الداخلية التي لا تتوفر إلا عند تنفيذ دلائل التشغيل في بيئة الاختبار المعزولة لـ Azure أو على Windows Hybrid Runbook Worker. يتم تثبيت الوحدة النمطية Orchestrator.AssetManagement.Cmdlets الداخلية بشكل افتراضي في حساب Automation الخاص بك وعندما يتم تثبيت دور Windows Hybrid Runbook Worker على الجهاز.

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

الاسم ‏‏الوصف
Get-AutomationCertificate Get-AutomationCertificate [-Name] <string> [<CommonParameters>]
Get-AutomationConnection Get-AutomationConnection [-Name] <string> [-DoNotDecrypt] [<CommonParameters>]
Get-AutomationPSCredential Get-AutomationPSCredential [-Name] <string> [<CommonParameters>]
Get-AutomationVariable Get-AutomationVariable [-Name] <string> [-DoNotDecrypt] [<CommonParameters>]
Set-AutomationVariable Set-AutomationVariable [-Name] <string> -Value <Object> [<CommonParameters>]
Start-AutomationRunbook Start-AutomationRunbook [-Name] <string> [-Parameters <IDictionary>] [-RunOn <string>] [-JobId <guid>] [<CommonParameters>]
Wait-AutomationJob Wait-AutomationJob -Id <guid[]> [-TimeoutInMinutes <int>] [-DelayInSeconds <int>] [-OutputJobsTransitionedToRunning] [<CommonParameters>]

لاحظ أن أوامر cmdlets الداخلية تختلف في التسمية عن أوامر cmdlet Az وAzureRM. أسماء cmdlet الداخلية لا تحتوي على كلمات مثل Azure أو Az في الاسم، ولكن لا تستخدم كلمة Automation. نوصي باستخدامها عبر استخدام AzureRM cmdlets في أثناء تنفيذ دليل التشغيل في بيئة الاختبار المعزولة لـ Azure أو في Windows Hybrid Runbook Worker لأنها تتطلب معلمات أقل وتعمل في سياق وظيفتك في أثناء التنفيذ.

استخدم AzureRM cmdlets لمعالجة موارد Automation خارج سياق دليل التشغيل.

وحدات Python النمطية

يمكنك إنشاء دلائل تشغيل Python 2 في Azure Automation. للحصول على معلومات وحدة Python النمطية، راجع إدارة حزم Python 2 في Azure Automation.

الوحدات النمطية المخصصة

يدعم Azure Automation وحدات PowerShell النمطية المخصصة التي تقوم بإنشائها لاستخدامها مع دلائل التشغيل وتكوينات DSC. أحد أنواع الوحدات المخصصة هو وحدة تكامل تحتوي اختياريًا على ملف بيانات التعريف لتحديد الوظيفة المخصصة للوحدات cmdlets. يتم توفير مثال على استخدام وحدة تكامل في إضافة نوع اتصال.

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

الترحيل إلى الوحدات النمطية Az

يوضح هذا القسم كيفية الترحيل إلى الوحدات النمطية لـ Az في Automation. لمزيد من المعلومات، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

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

إشعار

عند إنشاء حساب Automation جديد، حتى بعد الترحيل إلى وحدات Az النمطية، سيستمر Automation في تثبيت وحدات AzureRM النمطية بشكل افتراضي.

اختبار دلائل التشغيل وتكوينات DSC قبل ترحيل الوحدة النمطية

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

إيقاف كافة دلائل التشغيل التي تستخدم الوحدات النمطية AzureRM وإلغاء جدولتها

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

عندما تكون مستعدًا لإزالة جداولك، يمكنك إما استخدام مدخل Microsoft Azure أو cmdlet إزالة AzureRmAutomationSchedule. راجع إزالة جدول.

إزالة الوحدات النمطية AzureRM

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

استيراد وحدات Az

لا يؤدي استيراد وحدة Az إلى حساب Automation الخاص بك إلى استيراد الوحدة تلقائيًا إلى جلسة PowerShell التي تستخدمها دلائل التشغيل. يتم استيراد الوحدات النمطية إلى جلسة عمل PowerShell في الحالات التالية:

  • عندما يستدعي دليل التشغيل أمر cmdlet من وحدة نمطية.
  • عند استيراد دليل تشغيل الوحدة النمطية بشكل صريح مع cmdlet وحدة الاستيراد.
  • عند استيراد دليل تشغيل الوحدة النمطية بشكل صريح من خلال عبارة وحدة الاستيراد. يتم دعم عبارة using بدءًا من Windows PowerShell 5.0 وتدعم استيراد الفئات ونوع قائمة التعداد.
  • عندما يستورد دليل التشغيل وحدة نمطية غير مستقلة.

يمكنك استيراد الوحدات النمطية Az إلى حساب Automation من مدخل Microsoft Azure. نظرًا إلى أن Az.Accounts هي تبعية لوحدات Az الأخرى، فتأكد من استيراد هذه الوحدة قبل أي وحدات أخرى.

إشعار

مع إدخال دعم PowerShell 7.1 (إصدار أولي)، تم تحديث الخيار معرض الاستعراض مع التغييرات التالية:

  • معرض الاستعراض متاح على جزء أتمتة العمليات>الوحدات.
  • تعرض صفحة الوحدات النمطية عمودين جديدين - إصدار الوحدة النمطية وإصدار وقت التشغيل
  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. ابحث عن حسابات Automation وحددها.

  3. في صفحة Automation Accounts، حدد حساب Automation من القائمة.

  4. من حساب Automation، ضمن Shared Resources، حدد Modules.

  5. حدد Add a module (إضافة وحدة نمطية). في الصفحة Add a module، يمكنك تحديد أي من الخيارات التالية:

    1. استعراض من الملف - يمكنك تحديد ملف من الكمبيوتر المحلي.
    2. استعراض من المعرض - يمكنك استعراض وتحديد دليل التشغيل الحالي من المعرض.
  6. انقر فوق Select لتحديد وحدة نمطية.

  7. حدد Runtime version وانقر فوق Import.

    Screenshot of importing modules into your Automation account.

  8. في الصفحة Modules، يمكنك عرض الوحدة النمطية التي تم استيرادها ضمن حساب Automation.

يمكنك أيضًا إجراء هذا الاستيراد من خلال معرض PowerShell، من خلال البحث عن الوحدة النمطية لاستيرادها. عند العثور على الوحدة النمطية، حددها، واختر علامة التبويب Azure Automation حدد Deploy to Azure Automation.

Screenshot of importing modules directly from PowerShell Gallery.

اختبار دلائل التشغيل لديك

بعد قيامك باستيراد الوحدات النمطية Az إلى حساب Automation، يمكنك البدء في تحرير دلائل التشغيل وتكوينات DSC لاستخدام الوحدات النمطية الجديدة. تتمثل إحدى طرق اختبار تعديل دليل التشغيل لاستخدام أوامر cmdlets الجديدة في استخدام الأمر Enable-AzureRmAlias -Scope Process الموجود في بداية دليل التشغيل. بإضافة هذا الأمر إلى دليل التشغيل الخاص بك، يمكن تشغيل البرنامج النصي بدون تغييرات.

وحدات المنشئ النمطية

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

لمعرفة المزيد حول إنشاء وحدة PowerShell النمطية، راجع كيفية كتابة وحدة البرنامج النصي النمطية لـ PowerShell.

مجلد الإصدار

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

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

TestModule
   1.0.0
   2.0.0

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

بينما يدعم Automation الوحدات التي تحتوي على إصدارات جنبًا إلى جنب داخل الحزمة نفسها، إلا أنه لا يدعم استخدام إصدارات متعددة من وحدة عبر عمليات استيراد حزمة الوحدة النمطية. على سبيل المثال، يمكنك استيراد الوحدة النمطية "أ"، التي تحتوي على الإصدارين 1 و2 إلى حساب Automation الخاص بك. يمكنك لاحقًا تحديث الوحدة النمطية "أ" لتشمل الإصدارين 3 و4، عندما تقوم بالاستيراد إلى حساب Automation لديك، يمكن استخدام الإصدارين 3 و4 فقط في أي دلائل تشغيل أو تكوينات DSC. إذا كنت تريد توفر كل الإصدارات - 1 و2 و3 و4، يجب أن يحتوي ملف .zip على الإصدارات 1 و2 و3 و4.

إذا كنت ستستخدم إصدارات مختلفة من الوحدة نفسها بين دلائل التشغيل، يجب عليك دائمًا إعلان الإصدار الذي تريد استخدامه في دليل التشغيل الخاص بك باستخدام cmdlet Import-Module وتضمين المعلمة-RequiredVersion <version>. حتى إذا كان الإصدار الذي تريد استخدامه هو أحدث إصدار. هذا لأن وظائف دليل التشغيل قد تعمل في بيئة الاختبار المعزولة نفسها. إذا قامت بيئة الاختبار المعزولة بالفعل بتحميل وحدة نمطية برقم إصدار معين بشكل صريح، نظرًا إلى أن المهمة السابقة في بيئة الاختبار المعزولة هذه قالت إنها تفعل ذلك، فلن تقوم الوظائف المستقبلية في بيئة الاختبار المعزولة هذه بتحميل أحدث إصدار من هذه الوحدة تلقائيًا. هذا لأنه تم تحميل بعض إصداراته بالفعل في بيئة الاختبار المعزولة.

بالنسبة إلى مورد DSC، استخدم الأمر التالي لتحديد إصدار معين:

Import-DscResource -ModuleName <ModuleName> -ModuleVersion <version>

معلومات التعليمات

قم بتضمين ملخص ووصف ومسؤول URI لكل أمر cmdlet في الوحدة النمطية الخاصة بك. في PowerShell، يمكنك تحديد معلومات التعليمات لأوامر cmdlets باستخدام الأمر cmdlet Get-Help. يوضح المثال التالي كيفية تحديد الملخص ومساعدة URI في ملف الوحدة النمطية .psm1.

<#
     .SYNOPSIS
      Gets a Contoso User account
#>
function Get-ContosoUser {
[CmdletBinding](DefaultParameterSetName='UseConnectionObject', `
HelpUri='https://www.contoso.com/docs/information')]
[OutputType([String])]
param(
   [Parameter(ParameterSetName='UserAccount', Mandatory=true)]
   [ValidateNotNullOrEmpty()]
   [string]
   $UserName,

   [Parameter(ParameterSetName='UserAccount', Mandatory=true)]
   [ValidateNotNullOrEmpty()]
   [string]
   $Password,

   [Parameter(ParameterSetName='ConnectionObject', Mandatory=true)]
   [ValidateNotNullOrEmpty()]
   [Hashtable]
   $Connection
)

switch ($PSCmdlet.ParameterSetName) {
   "UserAccount" {
      $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $Password
      Connect-Contoso -Credential $cred
   }
   "ConnectionObject" {
      Connect-Contoso -Connection $Connection
  }
}
}

يؤدي توفير هذه المعلومات إلى إظهار نص التعليمات عبر الأمر cmdlet Get-Help في وحدة تحكم PowerShell. يتم عرض هذا النص أيضًا في مدخل Microsoft Azure.

Screenshot of integration module help

نوع الاتصال

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

Use a custom connection in the Azure portal

يستخدم مثال دليل التشغيل التالي أصل اتصال Contoso يسمى ContosoConnection للوصول إلى موارد Contoso وإرجاع البيانات من الخدمة الخارجية. في هذا المثال، يتم تعيين الحقول إلى خصائص UserName وPassword الخاصة بالكائن PSCredential ثم تمريرها إلى cmdlet.

$contosoConnection = Get-AutomationConnection -Name 'ContosoConnection'

$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $contosoConnection.UserName, $contosoConnection.Password
Connect-Contoso -Credential $cred
}

تتمثل الطريقة الأسهل والأفضل للتعامل مع هذا السلوك في تمرير كائن الاتصال مباشرة إلى الأمر cmdlet:

$contosoConnection = Get-AutomationConnection -Name 'ContosoConnection'

Connect-Contoso -Connection $contosoConnection
}

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

نوع الإخراج

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

قم بإضافة [OutputType([<MyOutputType>])]، حيث يكون MyOutputType نوعًا صالحًا. لمعرفة المزيد حول OutputType، راجع حول الدالات OutputTypeAttribute. التعليمات البرمجية التالية مثال لإضافة OutputType إلى cmdlet:

function Get-ContosoUser {
[OutputType([String])]
param(
   [string]
   $Parameter1
)
# <script location here>
}

Screenshot of graphical runbook output type

يشبه هذا السلوك وظيفة "الكتابة مسبقًا" لإخراج cmdlet في بيئة خدمة تكامل PowerShell، دون الحاجة إلى تشغيلها.

Screenshot of POSH IntelliSense

حالة Cmdlet

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

$globalNum = 0
function Set-GlobalNum {
   param(
       [int] $num
   )

   $globalNum = $num
}
function Get-GlobalNumTimesTwo {
   $output = $globalNum * 2

   $output
}

تبعية الوحدة النمطية

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

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

يجب ألا تعتمد الوحدة النمطية الخاصة بك على أي إعدادات تسجيل فريدة على مضيف. الأمثلة هي الإعدادات التي يتم إجراؤها عند تثبيت أحد المنتجات.

مسارات ملفات الوحدة النمطية

تأكد من أن كل الملفات في الوحدة تحتوي على مسارات بها أقل من 140 حرفًا. تتسبب أي مسارات يزيد طولها عن 140 حرفًا في حدوث مشكلات في استيراد دلائل التشغيل. لا يمكن لـ Automation استيراد ملف بحجم مسار يزيد عن 140 حرفًا إلى جلسة PowerShell باستخدامImport-Module.

استيراد الوحدات النمطية

يحدد هذا القسم عدة طرق يمكنك من خلالها استيراد وحدة نمطية إلى حساب Automation لديك.

استيراد الوحدات النمطية في مدخل Microsoft Azure

يمكنك إجراء التالي لاستيراد وحدة نمطية في مدخل Microsoft Azure:

  1. في المدخل، ابحث عن ⁧⁩Automation Accounts⁧⁩ وحددها.
  2. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  3. ضمن Shared Resources، حدد Modules.
  4. حدد Add a module (إضافة وحدة نمطية).
  5. حدد ملف .zip الذي يحتوي على الوحدة النمطية.
  6. حدد OK لبدء عملية الاستيراد.

استيراد الوحدات النمطية باستخدام PowerShell

يمكنك استخدام cmdlet جديد AzAutomationModule لاستيراد وحدة نمطية إلى حساب Automation الخاص بك. يأخذ الأمر cmdlet عنوان URL لحزمة .zip للوحدة النمطية.

New-AzAutomationModule -Name <ModuleName> -ContentLinkUri <ModuleUri> -ResourceGroupName <ResourceGroupName> -AutomationAccountName <AutomationAccountName>

يمكنك أيضًا استخدام cmdlet نفسه لاستيراد وحدة نمطية من معرض PowerShell مباشرة. تأكد من إحضار ModuleName وModuleVersion من معرض PowerShell.

$moduleName = <ModuleName>
$moduleVersion = <ModuleVersion>
New-AzAutomationModule -AutomationAccountName <AutomationAccountName> -ResourceGroupName <ResourceGroupName> -Name $moduleName -ContentLinkUri "https://www.powershellgallery.com/api/v2/package/$moduleName/$moduleVersion"

يمكنك استيراد وحدات معرض PowerShell إما مباشرة من المعرض أو من حساب Automation الخاص بك.

لاستيراد وحدة نمطية مباشرة من معرض PowerShell:

  1. انتقل إلى https://www.powershellgallery.com وابحث عن الوحدة النمطية للاستيراد.
  2. ضمن Installation Options، في علامة التبويب Azure Automation، حدد Deploy to Azure Automation. يفتح هذا الإجراء مدخل Microsoft Azure.
  3. في صفحة الاستيراد، حدد حساب Automation الخاص بك، ثم اختر OK.

Screenshot of the PowerShell Gallery import module

لاستيراد وحدة معرض PowerShell مباشرةً من حساب Automation الخاص بك:

  1. في المدخل، ابحث عن ⁧⁩Automation Accounts⁧⁩ وحددها.
  2. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  3. ضمن Shared Resources، حدد Modules.
  4. حدد Browse gallery، ثم ابحث في المعرض عن وحدة نمطية.
  5. حدد الوحدة المراد استيرادها، وحدد Import.
  6. حدد OK لبدء عملية الاستيراد.

Screenshot of importing a PowerShell Gallery module from the Azure portal

حذف الوحدات النمطية

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

حذف الوحدات النمطية في مدخل Microsoft Azure

لإزالة وحدة نمطية في مدخل Microsoft Azure، قم بالتالي:

  1. في المدخل، ابحث عن ⁧⁩Automation Accounts⁧⁩ وحددها.
  2. في صفحة Automation Accounts، حدد حساب Automation من القائمة.
  3. ضمن Shared Resources، حدد Modules.
  4. حدد الوحدة النمطية التي تريد إزالتها.
  5. في صفحة الوحدة النمطية، حدد Delete. إذا كانت هذه الوحدة إحدى الوحدات النمطية الافتراضية، فإنها تعود إلى الإصدار الذي كان موجودًا عند إنشاء حساب Automation.

حذف الوحدات النمطية باستخدام PowerShell

لإزالة وحدة نمطية من خلال PowerShell، قم بتشغيل الأمر التالي:

Remove-AzAutomationModule -Name <moduleName> -AutomationAccountName <automationAccountName> -ResourceGroupName <resourceGroupName>

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