لا يحدث ذلك كثيرًا ولكن في بعض الأحيان تعلق الآلات الافتراضية Hyper-V عند محاولة إيقاف تشغيلها. وتنتهي بقدرة لا تستجيب بعد على آلة افتراضية في إدارة Hyper-V بحالة “يتم إيقاف التشغيل”، ولا يمكنك إجبارها على الإغلاق باستخدام عناصر التحكم العادية. حتى أمر Stop-VM -Force في PowerShell لا يساعد.
في هذه الحالة، تحتاج إلى أن تكون أكثر إبداعًا في إيقاف تشغيل الآلة الافتراضية. أحد الطرق هو إيقاف تشغيل الخادم الخاص بك (أو الكمبيوتر الشخصي إذا كنت تستخدم Hyper-V العميل). ولكن ذلك حلاً شاملًا إلى حدٍ ما. الشيء الأهم الذي تحتاج إليه إذا أردت إجبار آلة افتراضية غير مستجيبة على الإغلاق هو هوية GUID الخاصة بالآلة الافتراضية. باستخدام GUID، يمكنك العثور على معرّف عملية وحدة المعالجة المركزية الخاصة بالآلة الافتراضية وإيقافه.
إجبار آلة افتراضية Hyper-V على الإيقاف عن طريق إيقاف عملية تشغيلها
إن استخدام الطريقة أدناه يُوصى به فقط إذا لم تستجب الآلة الافتراضية لأمر الإيقاف من إدارة Hyper-V أو باستخدام أمر Stop-VM -Force في PowerShell. يجب تشغيل الأوامر التالية في نافذة PowerShell لنظام التشغيل Windows بصفته مسؤول نظام محلي. تتطلب الطريقة أدناه استخدام Windows PowerShell. لا تعمل في PowerShell 6 أو الإصدارات اللاحقة.
في نافذة PowerShell لنظام التشغيل Windows المرتفعة، ابدأ بتشغيل الأمر Get-VM للعثور على هوية GUID الخاصة بالآلة الافتراضية. ستحتاج إلى معرفة اسم الآلة الافتراضية غير المستجيبة للقيام بذلك. إذا كنت بحاجة لتأكيد اسم الآلة الافتراضية، فقط قم بتشغيل الأمر Get-VM لرؤية قائمة بجميع الآلات الافتراضية التي تعمل على الجهاز.
A recent survey revealed 94% of organizations can’t recover their Active Directory (AD) forest in minutes. Cayosoft offers the only instant AD forest recovery.
Get-VM
بمجرد الحصول على اسم VM، تشغيل الأمر أدناه، مع استبدال “Windows 11” باسم VM الذي تريد إيقافه:
$VmGUID = (Get-VM 'Windows 11').id
الخطوة التالية هي استخدام Get-WMIObject للعثور على معرف العملية لـ VM. نستخدم هنا مساحة أسماء النطاقات Win32_Process إدارة Windows (WMI) للعثور على عملية وحدة المعالجة المركزية التي تطابق vmwp.exe ومعرف GUID ($VmGUID) لجهاز الكمبيوتر الافتراضي الخاص بنا.
$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})
بمجرد الحصول على معرف العملية ($VMWMProc)، يمكننا استخدام أمر Stop-Process لإنهائها:
Stop-Process ($VMWMProc.ProcessId) –Force
إجبار جميع VMs على الإغلاق
يمكنك أيضًا إجبار VM التي لا تستجيب على الإغلاق عن طريق إيقاف خدمة Hyper-V. ولكن هذه الطريقة ستغلق بشكل قسري جميع عمليات تشغيل VMs على الخادم الخاص بك. تحتاج فقط، كما هو الحال مع الطريقة السابقة، إلى تشغيل الأمر التالي في نافذة PowerShell المرتفعة بمثابة واحدة تحتوي على امتيازات المسؤول المحلي.
Get-Service vmms | Restart-Service
يمكن أن يستغرق إعادة تشغيل خدمة Hyper-V (vmms) وقتًا طويلاً. لذلك، لا تقلق إذا استغرقت بضع دقائق لإيقافه ثم إعادة تشغيله مرة أخرى.
مقالات ذات صلة:
Source:
https://petri.com/how-to-stop-an-unresponsive-hyper-v-virtual-machine/