تشغيل البرامج النصية في الجهاز الظاهري الذي يعمل بنظام 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.