Hyper-V 환경 관리는 어려운 일이 될 수 있으며, 그러므로 Central Console에서 가상 인fraSTRUCTURE를 구성하고 제어하기 위한 강력한 관리 도구가 필요합니다. 그래픽 사용자 인터페이스 뿐만 아니라, Hyper-V는 PowerShell을 사용하여 하이퍼-V 관리를 수행할 수 있는 명령어 라인 인터페이스를 제공합니다.
이 블로그 포스트에서는 PowerShell이 어떻게 작동하는지, Hyper-V PowerShell 명령어가 가상 머신(VM) パフォーマンス를 改善시키는 방법以及이 CLI 도구가 Hyper-V 관리 프로세스를 어떻게 상당히 簡素化시키는지 describe 합니다.
PowerShell은 무엇인가?
PowerShell은 Microsoft에 의해 개발되었는 任務自動화 및 構성 관리 프레임워크로, .NET Framework 및 .NET Core를 기반으로 만들어진 명령어 行 셸 및 관련 스크립팅 언어가 포함되어 있습니다.
PowerShell 명령어는 cmdletとして 知られ、cmdlet을 일괄 조립하여 單独의 PowerShell 스크립트로 다양한 任務를 자동화 할 수 있습니다. Microsoft는 複雑한 任务에도 基本的な 任务에서도 사용할 수 있는 nuclear PowerShell 명령어를 보유하고 있습니다.
PowerShell은 무엇을 할 수 있을까요?
PowerShell은 Hyper-V 관리자가 이를 사용하여 Operating Systems(Linux, macOS, Windows)을 관리하고 관련 프로세스를 자동화 할 수 있는 빨라운 수정을 제공합니다. GUI 도구와 달리, PowerShell은 command line만으로 전체 시스템을 관리할 수 있습니다.
또한, 필요한 Hyper-V PowerShell 명령어를 text file에(.ps1 확장자로) 저장하고 이 스크립트를 실행하여 certain tasks를 수행할 수 있습니다. 더욱이, PowerShell 스크립트를 일정 시간에 실행시키기 위해 Task Scheduler를 사용할 수 있습니다.
PowerShell을 어떻게 실행하는지?
我们可以通过几种方法在Hyper-V中运行PowerShell。获得PowerShell访问权限的一种简单方法是直接连接到Hyper-V服务器并从那里启动它。要远程连接到Hyper-V宿主,我们需要确保远程桌面已启用。一旦远程桌面启用,我们就可以使用远程桌面工具,像连接任何Windows服务器的图形用户界面(GUI)一样远程连接到服务器。
从GUI启动PowerShell
在基于GUI的操作系统中打开PowerShell,请按照以下步骤操作:
- 您需要点击开始按钮,在搜索栏中输入PowerShell。
- 右键点击PowerShell图标,选择以管理员身份运行,以以提升模式打开PowerShell。
从命令行启动PowerShell
如果您正在运行Windows Server Core或Hyper-V Server,请按照以下步骤运行PowerShell:
- 在命令提示符中输入PowerShell并按Enter键。
- A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
- 一旦进入PowerShell,您可以使用Hyper-V特定的PowerShell命令,我们将在本文后面介绍这些命令。
远程设置
要在Windows Server Core或Hyper-V Server中检查远程桌面设置,您可以启动sconfig实用程序(如果尚未启动)并使用选项7进行配置。此外,一旦远程连接到Hyper-V宿主,您可以使用选项15来退出到命令行。
한 번 여기에 있으면 일반 cmd.exe 환경에 있습니다. PowerShell 환경을 시작하려면 명령 줄에 단순히 powershell을 입력하십시오.
원격 PowerShell
PowerShell을 사용하여 Hyper-V와 원격으로 상호 작용할 수도 있습니다. 다시 말해서 원격 데스크톱 연결을 설정하지 않고도 Hyper-V 호스트에서 PowerShell 명령을 원격으로 실행할 수 있습니다.
Hyper-V 관리 도구가 로드된 관리 작업 스테이션에서 Hyper-V 명령을 실행할 수 있습니다. 먼저 Hyper-V 도구와 이러한 명령을 설치해야 합니다 (cmdlets).
Install-WindowsFeature RSAT-Hyper-V-Tools
도구를 로드한 후에는 아래 스크린샷에 표시된 대로 -computername 매개 변수를 사용하여 Hyper-V 호스트를 가리키는 동일한 유형의 명령을 실행할 수 있습니다. 호스트 이름을 get-vm PowerShell 명령에 전달합니다.
핵심 Hyper-V PowerShell 명령 12개
Hyper-V를 관리하는 프로세스를 쉽고 간단하게 만들 수 있는 효과적인 Hyper-V PowerShell 명령이 몇 가지 있습니다. 다양한 Hyper-V PowerShell 명령을 사용하는 방법을 살펴보겠습니다.
Get-Command
PowerShell을 처음 사용하는 사용자 및 어떤 cmdlet을 사용해야 하는지 알지 못하는 사용자를 위한 도움이 되는 Hyper-V PowerShell 명령부터 시작해 보겠습니다. Get-Command cmdlet을 실행하여 컴퓨터에 설치된 모든 사용 가능한 cmdlet (Windows PowerShell 명령), 함수 및 별칭의 전체 목록을 볼 수 있습니다.
그러나, 검색 범위를 좁히고 특정 기준과 일치하는 Hyper-V PowerShell 명령의 목록을 얻고 싶다면, Get-Command *-VM cmdlet을 사용하여 VM을 제어하고 구성할 수 있는 명령 목록을 찾을 수 있습니다.
VM 매개 변수를 VHD로 변경하여 가상 하드 디스크를 관리하는 데 사용되는 명령어의 전체 목록을 얻을 수 있습니다. 따라서 원하는 결과를 얻기 위해 다양한 검색 매개 변수를 시도할 수 있습니다.
Get-Help
Hyper-V PowerShell 명령을 결정한 후 해당 cmdlet에 대해 더 알아보세요. 이를 위해 Get-Help cmdlet을 사용할 수 있습니다. 예를 들어, Get-VM cmdlet에 대해 자세히 알아보려면 다음을 입력하십시오:
Get-Help Get-VM
Get-VM
Get-VM PowerShell 명령을 사용하면 하나 이상의 Hyper-V 호스트에서 사용 가능한 모든 VM을 볼 수 있습니다. 로컬 Hyper-V 호스트에서 모든 VM을 보려면 Get-VM PowerShell cmdlet을 실행해야 합니다.
PowerShell 화면에서 사용 가능한 VM 목록을 볼 수 있습니다. 이 목록에는 이름, 상태, CPU 사용량, 할당된 메모리, 가동 시간, 상태 및 버전이 포함됩니다.
Start-VM
이 특정 start VM PowerShell cmdlet은 VM을 시작하는 데 도움이 됩니다. 이를 위해 다음 Hyper-V PowerShell 명령을 실행하세요:
Start-VM -Name 'Windows Server 2016'
결과적으로, Windows Server 2016이라는 VM이 로컬 Hyper-V 호스트에서 시작됩니다. 실제로 VM이 시작되었는지 확인하기 위해 Get-VM cmdlet을 실행해 보겠습니다.
Start-VM PowerShell cmdlet을 수정한 버전을 사용하여 VM의 이름이 Hyper-V로 시작하는 경우에만 VM을 시작합니다:
Start-VM -Name Hyper-V*
보시다시피, Hyper-V Server Desktop라는 VM이 성공적으로 시작되었습니다. 그러나 다른 VM(Hyper-V Server 2012)가 이미 실행 중이며 PowerShell이 이를 알려줍니다.
Stop-VM
Stop-VM cmdlet을 사용하면 VM을 종료하거나 끌어내릴 수 있습니다. 이를 위해 다음 cmdlet을 실행할 수 있습니다:
Stop-VM -Name 'Windows Server 2016'
선택한 VM이 게스트 OS를 통해 성공적으로 종료되었음을 확인할 수 있습니다.
다른 예로는 이름이 Hyper-V로 시작하는 VM을 끌어내릴 수 있습니다:
Stop-VM -Name Hyper-V* -TurnOff
VM이 응답하지 않는 것을 발견하면 강제로 종료할 수 있습니다. 이를 위해 다음 PowerShell cmdlet을 실행하십시오:
Stop-VM -Name 'Windows Server 2016' -Force
강제 종료는 물리적 컴퓨터의 전원을 차단하는 것과 유사하므로, 저장되지 않은 애플리케이션 데이터의 손실을 초래할 수 있습니다. 이 경우, 잠재적인 데이터 손실을 피하기 위해 VM을 저장하는 것이 권장됩니다. 이를 위해 Save-VM cmdlet을 실행해야 하며, 이는 물리적 컴퓨터를 절전 모드로 변경하는 것과 동등합니다:
Save-VM -Name 'Windows Server 2016'
Hyper-V로 시작하는 VM을 저장하려면 다음 Hyper-V PowerShell 명령을 실행하십시오:
Get-VM -Name Hyper-V* | Save-VM
Checkpoint-VM
Checkpoint-VM 명령은 Hyper-V VM 체크포인트 (또는 Hyper-V 스냅샷으로도 알려짐)을 생성하는 데 도움을 줍니다. 다음 명령을 실행하여 특정 VM (Windows Server 2016)의 Update1이라는 이름의 체크포인트를 만듭니다:
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
VM이 성공적으로 생성되었는지 확인하려면 다음 Hyper-V PowerShell 명령을 사용하십시오:
Get-VMSnapshot -VMName 'Windows Server 2016'
반면에, 특정 Hyper-V 스냅샷을 삭제하려는 경우 Remove-VMSnapshot 명령을 사용할 수 있습니다. 예를 들어, 이름이 Testing으로 시작하는 모든 VM 스냅샷을 삭제하려면 다음 명령을 실행해야 합니다:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
위의 스크린샷은 선택한 Hyper-V 스냅샷을 삭제하는 전체 프로세스를 보여줍니다.
Test-VHD
이 Hyper-V PowerShell 명령은 가상 하드 디스크 파일이 실제로 존재하고 Hyper-V 배포에 사용할 수 있는지 확인하는 목적으로 사용됩니다. 이 명령은 다음과 같습니다:
Test-VHD -Path C:\Testing.vhd
경우에 따라 VHD 경로가 유효하면, 화면에 다음 출력이 표시됩니다:
Hyper-V VHD 및 VHDX 파일에 대한 작업 기초
Measure-VM
특정 VM의 리소스 활용 데이터를 수집하는 데 사용되는 Hyper-V PowerShell 명령입니다. 예를 들어, 다음 cmdlet을 실행하여 VM인 Windows Server 2016의 CPU 사용, RAM 사용, 디스크 용량 및 네트워크 트래픽에 대한 정보를 알아낼 수 있습니다.
Measure-VM -VMName 'Windows Server 2016'
참고로 Measure-VM cmdlet은 리소스 측정이 VM에 활성화된 경우에만 필요한 데이터를 보고할 수 있습니다. VM에 리소스 측정을 사용하도록 설정하려면 다음 Hyper-V PowerShell 명령을 사용합니다.
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
다음으로 Get-VMNetworkAdapter라는 도움이 되는 PowerShell cmdlet이 있습니다.Get-VMNetworkAdapter VM의 선택한 가상 네트워크 어댑터를 식별하는 데 사용할 수 있습니다. 예를 들어 VM과 관리 OS의 모든 가상 네트워크 어댑터를 찾으려면 다음 Hyper-V PowerShell 명령을 실행해야 합니다.
Get-VMNetworkAdapter –All
모든 것이 올바르게 설정된 경우 PowerShell 콘솔에 다음 정보가 표시되어야 합니다.
Hyper-V PowerShell 명령어를 사용하면 Hyper-V 네트워크 어댑터와 관련된 다양한 간단하거나 복잡한 작업을 수행할 수 있습니다. 이 가이드에서는 Hyper-V 환경에서 가상 네트워크 어댑터를 관리하고 구성하는 데 도움이 되는 cmdlet을 살펴보세요.
Update-VMVersion
PowerShell에는 선택한 VM의 버전을 업데이트할 수 있는 cmdlet이 있습니다:
Update-VMVersion -Name 'TestVM'
Hyper-V PowerShell 명령어를 실행한 후, TestVM이라는 VM은 현재 VM 버전으로 업데이트됩니다.
Get-Process
이 Hyper-V PowerShell 명령어를 사용하면 로컬 컴퓨터에서 현재 실행 중인 모든 프로세스를 볼 수 있습니다. Get-Process cmdlet을 실행한 후에는 화면에 다음과 같은 정보를 얻을 수 있습니다:
이 테이블은 다음과 같은 정보를 포함합니다:
- 프로세스가 열어놓은 핸들의 수
- 프로세스가 사용하는 비페이지드 메모리 양
- 프로세스가 사용하는 페이지드 메모리 양
- 프로세스의 작업 세트 크기
- 프로세스가 사용하는 가상 메모리 양
- 모든 프로세서에 할당된 프로세서 시간 양
- 프로세스 ID
- 프로세스 이름
Get-Process -ID 프로세스 ID
Get-Process WINWORD | Format-List *
-
Stop-Process
-
Wait-Process
Start-Process
Start-Process -FilePath "notepad.exe"
다른 예로는 “일반” 모드에서 PowerShell을 열었지만 관리 권한에 액세스하려면 PowerShell을 고정 모드로 실행해야 할 때가 있습니다. 이런 경우에 다음 하이퍼-V PowerShell 명령을 실행하십시오:
Start-Process -FilePath "powershell" -Verb RunAs
반면에, 실행 중인 프로세스 중 하나가 응답하지 않으면 Stop-Process cmdlet을 실행하여 실패한 애플리케이션을 중지할 수 있습니다:
Stop-Process -Name "notepad"
이 경우 로컬 컴퓨터에서 Notepad 애플리케이션의 모든 인스턴스가 중지됩니다.
각 Notepad 인스턴스에는 고유한 프로세스 ID가 있습니다. 특정 Notepad 인스턴스를 중지하려면 Stop-Process cmdlet에서 ID 매개 변수를 사용해야 합니다. 이를 위해 먼저 Get-Process cmdlet을 실행하여 필요한 활성 프로세스를 찾고 중지하려는 프로세스 ID를 식별해야 합니다.
예를 들어, 특정 Notepad 프로세스를 중지하려면 해당 프로세스 ID를 식별하고 다음 하이퍼-V PowerShell 명령을 실행하면 됩니다:
Stop-Process -ID 5052
결과적으로 선택한 Notepad 프로세스만 중지됩니다.
이러한 PowerShell 명령을 사용하면 원치 않는 리소스를 소비하고 Hyper-V 성능을 저하시키는 프로세스를 감지하여 이를 종료할 수 있습니다.
Where-Object
이 Hyper-V PowerShell 명령어는 파이프라인 개체를 필터링하고 필요한 정확한 데이터를 찾도록 합니다. 이 경우, 파이프라인을 통해 전달할 수 있는 개체를 지정하는 PowerShell 스크립트를 작성해야 합니다. 다양한 검색 기준을 사용하여 로컬 컴퓨터에서 어떤 개체든 찾을 수 있습니다.
예를 들어, 실행이 중지된 프로세스를 찾고 싶다면 다음 cmdlet을 사용하세요:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Where-Object cmdlet을 사용하는 또 다른 예는 특정 cmdlet을 찾고 싶을 때입니다. 다음 Hyper-V PowerShell 명령어를 사용하여 Wait로 시작하는 모든 cmdlet을 찾을 수 있습니다:
Get-Command | Where-Object {$_.Name -like '*wait*'}
다음 Where-Object cmdlet은 이름에 기반하여 특정 프로세스를 찾을 수 있도록 도와줍니다. 다음 명령을 실행하여 이름이 sys로 시작하는 모든 프로세스의 목록을 얻을 수 있습니다:
Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}
PowerShell을 사용하여 Hyper-V VM 만들기
Hyper-V의 강력한 내장 기능 중 하나는 관리 작업에 PowerShell을 사용할 수 있다는 것입니다. Hyper-V에서 PowerShell을 사용하여 수행할 수 있는 많은 작업 가운데 하나는 가상 머신을 만드는 것입니다. 새 VM을 만들기 위한 일련의 Hyper-V PowerShell 명령어를 살펴보겠습니다.
새 VM을 만들기 위한 PowerShell 명령어
Generation 2 VM을 신규 생성하고 brand new 60 GB VHDX 하드디스크를 사용하고 그것을 특정 가상 스캔에(이 경우 “ExternalSwitch“) 연결하기 위해서는, Hyper-V 호스트에서 다음 PowerShell 명령을 실행합니다.
-
VM 생성:
new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\virtualhard disks\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"
-
ISO 이미지를 引导하도록 DVD 드라이브를 추가하기 위해서는 추가적인 명령을 실행할 수 있습니다.
Add-vmscsicontroller -vmname WSTEST
Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\my.iso
-
우리가 고정 크기의 디스크를 생성하고 VM에 연결하려면 다음을 실행할 수 있습니다. 다음을 실행하여 고정 크기의 VHDX를 생성하고 VM에 연결할 수 있습니다:
new-vhd -path "d:\hyper-v\virtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed
add-vmharddiskdrive -vmname WSTEST -path "d:\hyper-v\virtual hard disks\wstest.vhdx"
결론
PowerShell은 처음에는 복잡해 보일 수 있지만, 한번 배우고 나면 Hyper-V PowerShell 명령어를 사용하고 Hyper-V 환경에서 관리를 간소화하는 방법을 빠르게 발견할 수 있습니다. VM을 관리하기 위해 무엇을 사용하든지 데이터 손실과 다운타임을 피하기 위해 백업을 생성해야한다는 것을 명심하세요.
NAKIVO Backup & Replication은 VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows 및 Microsoft 365 환경을 보호하는 믿을 수 있고 강력한 데이터 보호 솔루션입니다.
Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/