تشغيل البرامج النصية في الجهاز الظاهري الذي يعمل بنظام 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 دقيقة. بعد ذلك، سوف تنتهي مهلته.
  • يكون الاتصال الخارجي الصادر من الجهاز الظاهري لازمًا لإعادة نتائج البرنامج النصي.
  • لا يوصى بتشغيل برنامج نصي سيؤدي إلى إيقاف عامل الجهاز الظاهري أو تحديثه. يمكن أن يؤدي ذلك إلى ترك الملحق في حالة انتقالية، مما يتسبب في انتهاء المهلة.

ملاحظة

وللعمل بشكل صحيح، يتطلب ⁦⁩أمر التشغيل⁦⁩ الاتصال (port 443) بعناوين بروتوكول الإنترنت العامة لـ 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⁦ وهو معني بالتحقق من تعطيل الحساب المحلي للمسؤول، وإذا كان معطلاً يقوم بتمكينه.
⁩EnableEMS⁦ تمكين EMS
⁩EnableRemotePS⁧ تكوين الجهاز لتمكين PowerShell البعيد.
⁩EnableWindowsUpdate⁧ تمكين التحديثات التلقائية لـ Windows Update
⁩IPConfig⁧ إظهار معلومات مفصلة عن عنوان IP وقناع الشبكة الفرعية والعبارة الافتراضية لكل محول مرتبط بـ TCP/IP.
⁩RDPSettings⁧ يتحقق من إعدادات السجل وإعدادات نهج المجال. يقترح إجراءات النهج في حالة كان الجهاز جزءًا من المجال، أو يقوم بتعديل الإعدادات إلى قيمها الافتراضية.
⁩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/write⁩ ويكون هذا الإذن متاحًا لدور مساهم الجهاز الظاهري والمستويات الأعلى.

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

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

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

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

قد يفشل تنفيذ ملحق أمر تشغيل الإجراء في بيئة 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'

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

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

إذا كنت بحاجة إلى إزالة أمر تشغيل الإجراء الخاص بك ملحق 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.