แก้ปัญหา PowerShell ไม่รู้จัก cmdlet สำหรับใช้จัดการ Hyper-V

วันนี้มีประสบการณ์เกี่ยวกับจัดการ Hyper-V ที่ทำงานอยู่บนเซิร์ฟเวอร์ Windows Server 2012 R2 ที่ติดตั้งแบบ Server Core โดยการใช้ Windows PowerShell แล้วเกิดข้อผิดพลาดว่า PowerShell ไม่รู้จักคำสั่ง หรือ cmdlet (อ่านว่า command-let) มาฝากครับ

ปัญหาและอาการที่พบ
ขอเริ่มต้นด้วยรายละเอียดปัญหาที่ผมพบมานะครับ

ปัญหานี้เกิดขึ้นเมื่อผมต้องการแสดงรายชื่อคอมพิวเตอร์เสมือน (Virtual Machine) ใน Hyper-V โดยใช้คำสั่ง Get-VM ของ PowerShell แต่เมื่อผมทำการรรันคำสั่ง Get-VM ปรากฏว่าเกิดข้อผิดพลาดโดย PowerShell แจ้งว่าไม่รู้จักคำสั่ง Get-VM: The term ‘get-vm’ is not recognized as the name of a cmdlet, function, script file, or operable program. โดยมีรายละเอียดดังรูปที่ 1

รูปที่ 1

สาเหตุ
หลังจากเกิดปัญหา ผมพยายามค้นหาว่าเกิดจากสาเหตุใด ในที่สุดก็พบว่าปัญหา PowerShell ไม่รู้จักคำสั่ง Get-VM หรือคำสั่งอื่นๆ ที่เกี่ยวข้องกับการใช้การจัดการ Hyper-V นั้นเกิดจากใน การติดตั้ง Hyper-V บน Windows Server 2012 R2 Server Core นั้นไม่ได้ทำการติดตั้งเครื่องมือจัดการ (ไม่ได้ใส่ตัวเลือก -IncludeManagementTools) ทำให้โมดูล Hyper-V Module for Windows PowerShell ไม่ได้ถูกติดตั้งส่งผลให้ PowerShell ไม่รู้จักคำสั่งสำหรับใช้จัดการ Hyper-V ซึ่งสามารถตรวจสอบโดยการรันคำสั่ง Get-WindowsFeature Hyper-V* จะได้ผลดังรูปที่ 2 ซึ่งจะเห็นได้ว่า Hyper-V Module for Windows PowerShell มีสถานะการติดตั้งเป็น Available ซึ่งแสดงว่ายังไม่ได้ถูกติดตั้งบนระบบนั่นเอง

รูปที่ 2

วิธีการแก้ไข
ปัญหานี้ PowerShell ไม่รู้จักคำสั่งสำหรับใช้การจัดการ Hyper-V นี้ไม่มีอะไรซับซ้อนและแก้ไขได้ไม่ยาก เพียงแค่ทำการติดตั้งโมดูล Hyper-V-PowerShell โดยการรันคำสั่งด้านล่าง แล้วรอจนการติดตั้งแล้วเสร็จ

Install-WindowsFeature Hyper-V-PowerShell

รูปที่ 3

เมื่อติดตั้งแล้วเสร็จให้ทำการตราวจสอบการติดตั้งโดยการรันคำสั่ง Get-WindowsFeature Hyper-V* จะได้ผลดังรูปที่ 5 จะเห็นได้ว่า Hyper-V Module for Windows PowerShell มีสถานะการติดตั้งเป็น Installed ซึ่งแสดงว่ายังได้ถูกติดตั้งบนระบบร้อยแล้ว

รูปที่ 4

ผลการทำงาน
หลังจากทำการติดตั้ง Hyper-V Module for Windows PowerShell เราก็จะสามารถทำการจัดการ Hyper-V โดยใช้ PowerShell ตัวอย่างเช่น การแสดงรายชื่อคอมพิวเตอร์เสมือนทำได้โดยใช้คำสั่ง Get-VM ซึ่งจะได้ผลลักษณะดังรูปที่ 5

รูปที่ 5

สรุป
ถ้าเกิดปัญหา PowerShell ไม่รู้จักคำสั่งสำหรับจัดการ Hyper-V บน Windows Server 2012 R2 ที่ติดตั้งแบบ Server Core ขั้นตอนแรกให้ท่านทำการตรวจสอบว่าได้ติดตั้ง Hyper-V Module for Windows PowerShell แล้วหรือไม่ ถ้ายั้งไม่ได้ติดตั้งให้ทำการติดตั้ง (ตามวิธีการที่แสดงด้านบน) เพียงแค่นี้ก็เรียบร้อย หลังจากนั้นก็จะสามารถจัดการ Hyper-V ด้วยคำสั่งของพาวเวอร์เชลได้อย่างไม่มีปัญหาครับ

หมายเหตุ: ในบทความนี้อ้างอิง Windows PowerShell 4.0 บน Windows Server 2012 R2 ที่ติดตั้งแบบ Server Core กรณีที่นำไปใช้บน Windows เวอร์ชันนอกเหนือจากนี้คำสั่งที่ใช้อาจแตกต่างไปจากนี้

ข้อมูลอ้างอิง
TN: Install Hyper-V and Configure a Virtual Machine

Share This
Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Comments

comments

You may also like...