تشغيل البرامج النصية في الجهاز الظاهري الذي يعمل بنظام Windows باستخدام أوامر تشغيل الإجراء

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

المزايا

يمكنك الوصول إلى أجهزتك الظاهرية بطرق متعددة. يمكن لأمر التشغيل تشغيل البرامج النصية على أجهزتك الظاهرية عن بعد باستخدام عامل الجهاز الظاهري. يمكنك استخدام أمر التشغيل من خلال مدخل Azure أو واجهة برمجة تطبيقات REST أو PowerShell للأجهزة الظاهرية التي تعمل بنظام Windows.

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

المتطلبات الأساسية

Windows OS'Supported

Windows OS x64
Windows 10 مدعوم
Windows 11 مدعوم
Windows Server 2008 SP2 مدعوم
Windows Server 2008 R2 مدعوم
Windows Server 2012 مدعوم
Windows Server 2012 R2 مدعوم
Windows Server 2016 مدعوم
Windows Server 2016 Core مدعوم
Windows Server 2019 مدعوم
Windows Server 2019 Core مدعوم
Windows Server 2022 مدعوم
Windows Server 2022 Core مدعوم

القيود

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

  • تقتصر المخرجات على آخر 4,096 بايت.
  • الحد الأدنى من الوقت لتشغيل البرنامج النصي هو حوالي 20 ثانية.
  • تشغيل البرامج النصية كنظام على Windows.
  • يمكن تشغيل برنامج نصي واحد في كل مرة.
  • البرامج النصية التي تطالب بالمعلومات (الوضع التفاعلي) غير مدعومة.
  • لا يمكنك إلغاء برنامج نصي قيد التشغيل.
  • الحد الأقصى للوقت الذي يمكن به تشغيل البرنامج النصي هو 90 دقيقة. بعد ذلك، سوف تنتهي مهلته.
  • يكون الاتصال الخارجي الصادر من الجهاز الظاهري لازمًا لإعادة نتائج البرنامج النصي.
  • لا يوصى بتشغيل برنامج نصي سيؤدي إلى إيقاف عامل الجهاز الظاهري أو تحديثه. يمكن أن يؤدي ذلك إلى ترك الملحق في حالة انتقالية، مما يتسبب في انتهاء المهلة.

إشعار

للعمل بشكل صحيح، يتطلب تشغيل الأمر الاتصال (المنفذ 443) بعناوين IP العامة ل Azure. وإذا لم يكن للملحق حق الدخول إلى هذه الأطراف النهائية، فقد تعمل البرامج النصية بنجاح ولكن دون إعادة النتائج. إذا كنت تقوم بحظر حركة المرور على الجهاز الظاهري، يمكنك استخدام علامات الخدمة للسماح لعناوين بروتوكول الإنترنت العامة في Azure بالمرور باستخدام علامة AzureCloud.

لا تعمل ميزة أمر التشغيل إذا كانت حالة عامل الجهاز الظاهري على وضع NOT READY. تحقق من حالة العامل في خصائص الجهاز الظاهري في مدخل Azure.

الأوامر المتوفرة

يعرض هذا الجدول قائمة الأوامر المتوفرة للأجهزة الظاهرية التي تعمل بنظام Windows. يمكنك استخدام الأمر RunPowerShellScript لتشغيل أي برنامج نصي مخصص تريده. عند استخدام Azure CLI أو PowerShell لتشغيل أمر، يجب أن تكون القيمة التي توفرها للمعلمة --command-id أو المعلمة -CommandId إحدى القيم المدرجة التالية. عند تحديد قيمة ليست أمرا متوفرا، تتلقى هذا الخطأ:

The entity was not found in this Azure location

الاسم الوصف
RunPowerShellScript تشغيل برنامج PowerShell نصي
DisableNLA تعطيل مصادقة على مستوى الشبكة
DisableWindowsUpdate تعطيل التحديثات التلقائية Windows Update
EnableAdminAccount وهو معني بالتحقق من تعطيل الحساب المحلي للمسؤول، وإذا كان معطلاً يقوم بتمكينه.
تمكينEMS تمكين EMS
EnableRemotePS تكوين الجهاز لتمكين PowerShell البعيد.
تمكين WindowsUpdate تمكين التحديثات التلقائية لـ Windows Update
IPConfig إظهار معلومات مفصلة عن عنوان IP وقناع الشبكة الفرعية والعبارة الافتراضية لكل محول مرتبط بـ TCP/IP.
إعدادات RDP يتحقق من إعدادات السجل وإعدادات نهج المجال. يقترح إجراءات النهج في حالة كان الجهاز جزءًا من المجال، أو يقوم بتعديل الإعدادات إلى قيمها الافتراضية.
ResetRDPCert إزالة شهادة TLS/SSL مرتبطة بوحدة استماع RDP واستعادة أمان وحدة استماع RDP إلى الوضع الافتراضي. استخدم هذا البرنامج النصي إذا لاحظت أية مشكلات في الشهادة.
SetRDPPort تعيين رقم المنفذ الافتراضي أو المحدد من قبل المستخدم لاتصالات سطح المكتب البعيد. يمكّن قواعد برنامج الحماية للوصول الوارد إلى البوابة.

Azure CLI

يستخدم المثال التالي الأمر az vm run-command لتشغيل برنامج نصي shell على جهاز Azure ظاهري يعمل بنظام Windows.

# script.ps1
#   param(
#       [string]$arg1,
#       [string]$arg2
#   )
#   Write-Host This is a sample script with parameters $arg1 and $arg2

az vm run-command invoke  --command-id RunPowerShellScript --name win-vm -g my-resource-group \
    --scripts @script.ps1 --parameters "arg1=somefoo" "arg2=somebar"

مدخل Azure

انتقل إلى جهاز ظاهري في مدخل Azure وحدد Run command من القائمة اليسرى، ضمن Operations. ستظهر قائمة بالأوامر المتوفرة للتشغيل على الجهاز الظاهري.

قائمة الأوامر

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

إشعار

الأوامر المضمنة غير قابلة للتحرير.

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

تشغيل إخراج البرنامج النصي للأمر

PowerShell

يستخدم المثال التالي cmdlet Invoke-AzVMRunCommand لتشغيل برنامج PowerShell النصي على جهاز Azure ظاهري. يتوقع cmdlet أن يكون البرنامج النصي المشار إليه في المعلمة -ScriptPath محليًا بالنسبة لمكان تشغيل cmdlet.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunPowerShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

إشعار

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

تقييد الوصول إلى أمر التشغيل

يتطلب سرد أوامر التشغيل أو عرض تفاصيل الأمر الحصول على إذن ⁦Microsoft.Compute/locations/runCommands/read⁩على مستوى الاشتراك. ويكون هذا الإذن متاحًا لدور القارئالمدمج والمستويات الأعلى.

يتطلب Microsoft.Compute/virtualMachines/runCommands/action تشغيل أمر الإذن . ويكون هذا الإذن متاحًا لدور مساهم الجهاز الظاهري والمستويات الأعلى.

يمكنك استخدام أحد الأدوار المدمجةلإنشاء دور مخصص لاستخدام ⁩أمر التشغيل⁩.

استكشاف أخطاء أمر تشغيل الإجراء في Windows وإصلاحها

عند استكشاف أخطاء أمر تشغيل الإجراء وإصلاحها لبيئات Windows، راجع ملف سجل RunCommandExtension الموجود عادة في الدليل التالي: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log لمزيد من التفاصيل.

المشكلات المعروفة

  • قد يفشل تنفيذ Action Run Command Extension في بيئة Windows إذا كان الأمر يحتوي على أحرف محجوزة. على سبيل المثال:

    & إذا تم تمرير الرمز في معلمة الأمر الخاص بك مثل البرنامج النصي PowerShell أدناه، فقد يفشل.

    $paramm='abc&jj'
    Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath     C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}
    

    ^ استخدم الحرف للإلغاء في & الوسيطة، مثل$paramm='abc^&jj'

  • قد يفشل ملحق أمر التشغيل أيضا في التنفيذ إذا كان الأمر المطلوب تنفيذه يحتوي على "\n" في المسار، حيث سيتم التعامل معه كخط جديد. على سبيل المثال، C:\Windows\notepad.exe يحتوي على \n في مسار الملف. ضع في اعتبارك استبدال \n ب \N في المسار الخاص بك.

  • تأكد من عدم وجود أي إعداد مخصص في مفتاح HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun التسجيل (مفصل هنا). قد يتم تشغيل هذا أثناء مراحل تثبيت ملحق RunCommand أو تمكينه ويتسبب في حدوث خطأ مثل "لا يتم التعرف على XYZ كأمر داخلي أو خارجي أو برنامج قابل للتشغيل أو ملف دفعي".

إجراء تشغيل إزالة الأمر

إذا كنت بحاجة إلى إزالة أمر تشغيل الإجراء الخاص بك ملحق Windows، فراجع الخطوات التالية ل Azure PowerShell وCLI:

استبدل rgname وvmname باسم مجموعة الموارد ذات الصلة واسم الجهاز الظاهري في أمثلة الإزالة التالية.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'
az vm run-command invoke  --command-id RemoveRunCommandWindowsExtension --name vmname -g rgname

إشعار

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

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

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