Hyper-V PowerShell 모듈: 더 많은 작업 수행하기

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 호스트에서 대화형으로 명령을 실행할 수 있게 합니다.

Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)

클라이언트 및 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)
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
New VM named “HYPER”

다른 VM 속성을 기반으로 VM 만들기

가끔은 다른 가상 머신과 유사한 속성을 가진 가상 머신을 만들어야 할 때가 있습니다. 이를 수행할 수 있지만 다른 가상 머신에서 변수에 가상 머신 속성을 할당하고 새로운 가상 머신을 만들 때 이러한 변수를 사용할 수 있습니다. 예를 들어:

1. 다음 예와 같이 변수에 출력을 할당하여 기존 가상 머신의 속성을 조회하려면 Get-VM을 실행하십시오.

$VMold = Get-VM "HYPER_old"

2. 메모리와 같은 속성을 가져오기 위해 Get-VMMemory cmdlet을 실행하고 (이 경우 메모리) 속성을 변수에 할당하십시오.

$memory = (Get-VMMemory -VMName $VMold.name).Startup

3. 그런 다음 Name, Generation 속성을 다른 가상 머신에서 가져온 Generation 속성을 사용하여 새로운 가상 머신을 New-VM cmdlet으로 만드십시오. 그리고 다른 가상 머신에서 얻은 값을 사용하여 메모리 양을 지정하십시오.

New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memory
New VM created from Old existing VM

PowerShell을 사용하여 기존 가상 머신 목록 출력

Hyper-V 호스트에 최소한 두 개의 가상 머신이 생성되었다고 가정하고 생성된 가상 머신을 열거하는 방법을 알아보겠습니다. 다음을 수행하십시오:

1. Get-VM cmdlet을 실행하십시오. 매개 변수 없이 실행하면 Get-VM은 모든 기존 가상 머신에 대해 Hyper-V 호스트에 쿼리를 수행합니다. Get-VM

Get-VM
Output of Get-VM run with no Parameters

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

Get-VM -Name HYPER_old
Output of Get-VM run with the -Name Parameter

그다음, 특정 State에 있는 모든 가상 머신을 찾아야 할 수도 있습니다. 이 경우 Get-VM을 실행하여 모든 가상 머신을 쿼리하고 출력을 Where-Object cmdlet에 파이프하여 수행하면 됩니다.

아래 예제에서는 ‘|’ 파이프가 Get-VM의 출력을 StateRunning인 VM 객체로 제한합니다. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}
Output of Get-VM filtering out the VM with the state of Running

VM 시작 및 중지

이 시점에서 이전에 생성된 VM은 아마 중지되어 있을 것입니다. 시작하고 그런 다음 VM을 중지하는 방법을 배워보겠습니다.

원격 Hyper-V 호스트의 PowerShell 세션에서:

1. -Name 매개변수와 함께 이전에 생성된 VM의 이름(Name)을 제공하여 Start-VM cmdlet을 실행합니다.

Start-VM -Name NewVM
The Start-VM command starting the VM named HYPER_old

VM이 시작된 상태이므로 -Name 매개변수와 함께 VM의 이름을 제공하여 Stop-VM cmdlet을 사용하여 중지합니다.

Stop-VM -Name HYPER_old

위의 명령을 실행하면 아래 스크린샷에서 볼 수 있듯이 VM이 종료됩니다;

Stop-VM stopping the HYPER_old 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이 자동으로 적절하게 종료되도록 합니다.

Set-VM -Name HYPER_old -AutomaticStopAction Shutdown

Hyper-V VM 저장하기

원격 Hyper-V 호스트의 PowerShell 세션에서 나중에 사용할 VM의 상태를 보존하기 위해 만든 VM을 저장해야 할 수 있습니다. 이를 위해 Name 매개변수와 함께 Save-VM cmdlet을 사용하여 저장하려는 VM의 이름을 지정합니다.

저장하려는 VM은 실행 중이어야 합니다.

Save-VM -Name HYPER_old
Save-VM cmdlet saving HYPER_old VM state.

Hyper-V VM 체크포인트 관리하기

변경 사항을 적용하기 전에 VM의 기존 상태를 저장하거나 VM 변경 사항을 되돌리려면 체크포인트에 대해 알아야 합니다. 체크포인트는 모든 Hyper-V VM의 디스크 및 메모리 상태를 빠르게 저장하는 편리한 방법입니다.

Hyper-V 호스트에서 Checkpoint-VM cmdlet을 실행하여 저장하려는 VM의 이름과 체크포인트의 이름을 제공합니다.

매개변수 이름 SnapshotName은 여전히 Hyper-V 2012에서 사용되는 이전 용어를 참조합니다. 스냅샷은 체크포인트와 동일한 개념입니다.

Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshot
Using Checkpoint-VM to create a Snapshot of HYPER_old VM called MyVMSnapshot

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

Get-VMSnapshot -VMName HYPER_old
Retrieves all the Snapshots stored for HYPER_old VM

결론

이 자습서의 모든 데모를 진행했다면 PowerShell로 Hyper-V VM을 관리하는 길에 잘 나아가고 있습니다. 이제 PowerShell 및 Hyper-V로 1, 10 또는 100개의 VM을 관리할 수 있는 지식을 갖추게 되었을 것입니다!

PowerShell 및 Hyper-V로 어떤 종류의 작업을 자동화할 수 있다고 생각하십니까?

Source:
https://adamtheautomator.com/hyper-v-powershell/