Powershell Hyper-V 자주 사용하는 명령어 정리
# VM 생성
New-VM -Name testvm -Path "C:\VM"
# VM 프로세서 갯수 변경
Set-VM -Name testvm -ProcessorCount 2
# VM 메모리 사이즈 변경
Set-VMMemory testvm -StartupBytes 4GB
# VM 익스포트 - 임포트(testvm 을 testvm2 로 Copy)
Rename-VM testvm -NewName testvm2
Export-VM -Name testvm2 -Path C:\VM
Rename-VM testvm2 -NewName testvm
Import-VM -Path "C:\VM\testvm2\Virtual Machines\XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.vmcx" -Copy -GenerateNewId -VirtualMachinePath C:\VM\testvm2 -VhdDestinationPath "C:\VM\testvm2\Virtual Hard Disks"
# VM 네트워크 연결된 어뎁터 이름 확인
$switchName = (Get-VMSwitch -SwitchType External |Select -First 1).Name
$adapterName = (Get-VMNetworkAdapter -VMName testvm |Where-Object {$_.SwitchName -eq $switchName -and $_.MACAddress -ne $null } |Select -First 1).Name
# VM 네트워크 어뎁터 맥 주소 변경
Set-VMNetworkAdapter -VMName testvm -Name $adapterName -StaticMacAddress "EEEE67001001"
# VM 네트워크 어뎁터 연결
Connect-VMNetworkAdapter -VMName testvm -Name $adapterName -SwitchName $switchName
# VM 네트워크 어뎁터 연결 해제
Disconnect-VMNetworkAdapter -VMName testvm -Name $adapterName
# VM VHD 사이즈 변경
$vhdPath = (Get-VM -VMName testvm |Select-Object VMId |Get-VHD |Select -First 1).Path
Resize-VHD -Path $vhdPath -SizeBytes 50GB
Add-VMNetworkAdapter -VMName testvm -Name "New Network Adapter" -SwitchName $switchName
# VM 네트워크 어뎁터 삭제
Remove-VMNetworkAdapter -VMName testvm -VMNetworkAdapterName "New Network Adapter"
# VM Pysical IDE 하드 디스크 추가
$controller = Get-VMIdeController -VMName testvm -ControllerNumber 0
Add-VMHardDiskDrive -VMName testvm -VMDriveController $controller -DiskNumber 1
# VM Virtual SCSI 하드 디스크 추가
New-VHD -Path "C:\VM\testvm\new_vritual_hdd.vhd" -Fixed -SizeBytes 500GB
if ( (Get-VMScsiController -VMName testvm -ControllerNumber 0 |Measure).Count -eq 0) {
Add-VMScsiController -VMName testvm
}
Add-VMHardDiskDrive -VMName testvm -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 0 -Path"C:\VM\testvm\new_vritual_hdd.vhd"
# VM 하드 디스크 조회
Get-VMHardDiskDrive -VMName testvm |Where {$_.ControllerNumber -eq 0 -and $_.ControllerLocation -eq 0 -and $_.ControllerType -eq "SCSI"}
# VM 삭제
Remove-VM -Name testvm -Force
# VM 상태 확인
Get-VM -Name testvm | Where-Object {$_.State -eq 'Running'}
# VM 종료
Stop-VM -Name testvm
# VM 스냅샷 생성(체크 포인트 생성)
Get-VMSnapshot -VMName testvm | Where-Object {$_.Name -match '2017-11-10'} | Remove-VMSnapshot
Get-VMSnapshot -VMName testvm | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-30) } | Remove-VMSnapshot