Microsoft의 Hyper-V 가상화 플랫폼을 사용하여 가상 머신을 실행 중이라면, Hyper-V Manager를 사용하는 것에 익숙할 것입니다. 그러나 Hyper-V PowerShell 모듈을 사용하면 더 적은 시간에 더 많은 작업을 수행할 수 있다는 것을 알고 계셨나요?
이 튜토리얼에서는 PowerShell을 사용하여 Hyper-V VM을 관리하는 방법을 배우게 될 것입니다. 생성, 제거 및 VM 스냅샷에 대해서도 알아볼 것입니다!
사전 요구 사항
이 튜토리얼을 위해서는 다음이 필요합니다:
- A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
- A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
- A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.
원격 Hyper-V 호스트에 연결
PowerShell에서 Hyper-V를 작업하려면 어떤 방식으로든 Hyper-V 호스트와 통신할 수 있어야 합니다. 로컬에서 Hyper-V PowerShell cmdlet를 실행하면 Hyper-V 호스트의 이름을 제공하거나 PowerShell Remoting을 사용하여 Hyper-V 호스트 자체에 연결할 수 있습니다.
이 튜토리얼에서는 Hyper-V 호스트에 지속적인 연결을 만들고 명령을 Hyper-V 호스트에서 실행할 것입니다.
1. 로컬 컴퓨터에서 PowerShell을 엽니다.
2. Enter-PSSession
cmdlet을 실행하여 원격 Hyper-V 호스트의 호스트 이름을 ComputerName
매개 변수에 제공합니다. 이 동작은 대화형 세션을 만들어 원격 Hyper-V 호스트에서 대화형으로 명령을 실행할 수 있게 합니다.
클라이언트 및 Hyper-V 호스트가 동일한 Active Directory 도메인의 구성원이면
Credential
매개 변수를 사용할 필요가 없습니다.
3. 그런 다음 Hyper-V 호스트에 연결하려면 사용자 이름과 암호를 입력하라는 프롬프트가 표시됩니다. 이 사용자 이름과 암호는 원격 호스트의 로컬 관리자 사용자여야 합니다. 연결되면 PowerShell 프롬프트가 Hyper-V 호스트의 호스트 이름을 표시하도록 변경된 것을 볼 수 있습니다.
이제 명령을 실행할 준비가 되었습니다!
PowerShell을 사용하여 Hyper-V VM 만들기
이제 PowerShell Remoting을 사용하여 Hyper-V 호스트에 연결되었다고 가정하고 Hyper-V VM을 만들기 위해 명령을 실행해 보겠습니다.
간단한 VM 만들기
원격 Hyper-V 호스트에 연결된 PSRemoting 세션에서 다음을 수행합니다:
New-VM
cmdlet을 실행하여 새 VM을 만듭니다. New-VM
cmdlet을 사용하여 VM을 만들 때 여러 가지 옵션을 선택할 수 있습니다.
1. 다음 예제에서는 튜토리얼이 다음과 같은 설정으로 VM을 만들고 있습니다:
- A name of MyVM (
HYPER
) - 512MB의 RAM (
MemoryStartupBytes
)

다른 VM 속성을 기반으로 VM 만들기
가끔은 다른 가상 머신과 유사한 속성을 가진 가상 머신을 만들어야 할 때가 있습니다. 이를 수행할 수 있지만 다른 가상 머신에서 변수에 가상 머신 속성을 할당하고 새로운 가상 머신을 만들 때 이러한 변수를 사용할 수 있습니다. 예를 들어:
1. 다음 예와 같이 변수에 출력을 할당하여 기존 가상 머신의 속성을 조회하려면 Get-VM
을 실행하십시오.
2. 메모리와 같은 속성을 가져오기 위해 Get-VMMemory
cmdlet을 실행하고 (이 경우 메모리) 속성을 변수에 할당하십시오.
3. 그런 다음 Name
, Generation
속성을 다른 가상 머신에서 가져온 Generation
속성을 사용하여 새로운 가상 머신을 New-VM
cmdlet으로 만드십시오. 그리고 다른 가상 머신에서 얻은 값을 사용하여 메모리 양을 지정하십시오.

PowerShell을 사용하여 기존 가상 머신 목록 출력
Hyper-V 호스트에 최소한 두 개의 가상 머신이 생성되었다고 가정하고 생성된 가상 머신을 열거하는 방법을 알아보겠습니다. 다음을 수행하십시오:
1. Get-VM
cmdlet을 실행하십시오. 매개 변수 없이 실행하면 Get-VM
은 모든 기존 가상 머신에 대해 Hyper-V 호스트에 쿼리를 수행합니다. Get-VM

2. 단일 가상 머신만 검색하려는 경우 -Name
매개 변수를 사용하십시오. 아래 코드 명령은 Hyper-V에서 이전에 생성된 HYPER_old
라는 이름의 가상 머신에 대한 쿼리를 수행합니다. Get-VM -Name HYPER_old

그다음, 특정 State
에 있는 모든 가상 머신을 찾아야 할 수도 있습니다. 이 경우 Get-VM
을 실행하여 모든 가상 머신을 쿼리하고 출력을 Where-Object
cmdlet에 파이프하여 수행하면 됩니다.
아래 예제에서는 ‘|’ 파이프가 Get-VM
의 출력을 State
가 Running
인 VM 객체로 제한합니다. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

VM 시작 및 중지
이 시점에서 이전에 생성된 VM은 아마 중지되어 있을 것입니다. 시작하고 그런 다음 VM을 중지하는 방법을 배워보겠습니다.
원격 Hyper-V 호스트의 PowerShell 세션에서:
1. -Name
매개변수와 함께 이전에 생성된 VM의 이름(Name
)을 제공하여 Start-VM
cmdlet을 실행합니다.

VM이 시작된 상태이므로 -Name
매개변수와 함께 VM의 이름을 제공하여 Stop-VM
cmdlet을 사용하여 중지합니다.
위의 명령을 실행하면 아래 스크린샷에서 볼 수 있듯이 VM이 종료됩니다;

Hyper-V VM 수정
VM은 항상 같지 않습니다. CPU 리소스를 늘리거나 VM이 지속적으로 메모리를 소진하는 경우가 있을 수 있습니다. 이 경우 Set-VM
cmdlet이 도움이 됩니다.
기존 VM을 수정하는 예로, 원격 Hyper-V 호스트의 PowerShell 세션에서:
Set-VM
cmdlet을 실행하여 현재 실행 중인 HYPER_old VM을 자동으로 종료합니다. Name
매개변수를 사용하여 설정하고자 하는 VM을 지정하고 AutomaticStopAction
매개변수의 값으로 Shutdown
을 지정하여 Hyper-V 호스트가 종료될 때 VM이 자동으로 적절하게 종료되도록 합니다.
Hyper-V VM 저장하기
원격 Hyper-V 호스트의 PowerShell 세션에서 나중에 사용할 VM의 상태를 보존하기 위해 만든 VM을 저장해야 할 수 있습니다. 이를 위해 Name
매개변수와 함께 Save-VM
cmdlet을 사용하여 저장하려는 VM의 이름을 지정합니다.
저장하려는 VM은 실행 중이어야 합니다.

Hyper-V VM 체크포인트 관리하기
변경 사항을 적용하기 전에 VM의 기존 상태를 저장하거나 VM 변경 사항을 되돌리려면 체크포인트에 대해 알아야 합니다. 체크포인트는 모든 Hyper-V VM의 디스크 및 메모리 상태를 빠르게 저장하는 편리한 방법입니다.
Hyper-V 호스트에서 Checkpoint-VM
cmdlet을 실행하여 저장하려는 VM의 이름과 체크포인트의 이름을 제공합니다.
매개변수 이름
SnapshotName
은 여전히 Hyper-V 2012에서 사용되는 이전 용어를 참조합니다. 스냅샷은 체크포인트와 동일한 개념입니다.

일단 체크포인트가 생성되면 Get-VMSnapshot
cmdlet을 사용하여 Hyper-V 호스트에 저장된 모든 스냅샷을 검색할 수 있습니다. 아래에서 VM HYPER_old에는 세 개의 체크포인트가 있습니다.

결론
이 자습서의 모든 데모를 진행했다면 PowerShell로 Hyper-V VM을 관리하는 길에 잘 나아가고 있습니다. 이제 PowerShell 및 Hyper-V로 1, 10 또는 100개의 VM을 관리할 수 있는 지식을 갖추게 되었을 것입니다!
PowerShell 및 Hyper-V로 어떤 종류의 작업을 자동화할 수 있다고 생각하십니까?