VMware vSphere PowerCLI는 명령 프롬프트에서 VMware 인프라를 관리할 수 있게 해주는 PowerShell 모듈 모음입니다. PowerCLI를 활용하면 가상 머신, 데이터스토어, 네트워크, 사용자의 상태를 조회하고, 다양한 설정을 관리하며, 새로운 객체를 생성할 수 있습니다. 또한 ESXi, vCenter Server, vSphere, vSAN 등 VMware 제품에 대한 자동화 작업에서 PowerShell을 사용할 수 있습니다.
현재 VMware는 PowerShell Core(7.0 이상) 전용 PowerCLI 버전만 개발하고 있습니다. 이 버전은 크로스 플랫폼을 지원하므로 Windows, Linux, macOS 어디에서나 사용할 수 있습니다. Windows PowerShell 5.x용 기존 PowerCLI 모듈에는 보안 수정 사항만 제공되므로, 최신 PowerShell Core 버전을 사용하는 것이 권장됩니다.
Windows에 VMware PowerCLI 모듈 설치 방법
VMware PowerCLI는 Windows에서 온라인 또는 오프라인으로 설치할 수 있습니다.
PowerShell 갤러리에서 온라인으로 설치하려면 아래 명령어를 실행합니다:
Install-Module -Name VMware.PowerCLI
PowerCLI vSphere 6.5 이하 버전은 MSI 설치 프로그램으로 배포되었습니다.
현재 사용자에게만 모듈을 설치하려면 다음과 같이 실행합니다:
Install-Module VMware.PowerCLI -Scope CurrentUser
기본적으로 PowerShell 갤러리에서 최신 버전이 설치됩니다. 특정 버전을 설치하려면 먼저 사용 가능한 전체 버전 목록을 확인한 후 원하는 버전을 지정하여 설치하면 됩니다:
Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.4.0.17860403
설치 과정에서 NuGet 공급자 업데이트 여부를 묻는 메시지가 표시될 수 있으며, 신뢰할 수 없는 PowerShell 갤러리 리포지토리에서의 설치도 확인해야 합니다. Set-PSRepository cmdlet을 사용하면 해당 리포지토리를 신뢰할 수 있는 상태로 변경할 수 있습니다.
PowerCLI 모듈이 정상적으로 설치되었는지 확인하고 버전을 조회하려면 다음 명령어를 사용합니다:
Get-Module -ListAvailable VMware* | Select Name,version
PowerCLI 모듈 버전을 업데이트하려면 아래 명령어를 실행하기만 하면 됩니다:
Update-Module -Name VMware.PowerCLI
Windows에 Choco 패키지 관리 모듈이 설치되어 있다면 리포지토리에서 PowerCLI 모듈을 검색할 수 있습니다:
choco search vmware
그리고 다음 명령어로 설치합니다:
choco install vmware-powercli-psmodule
참고로 PowerCLI 모듈은 아직 winget에서는 제공되지 않습니다.
오프라인 환경에 PowerCLI 설치하기
네트워크가 격리된 환경의 컴퓨터에 PowerCLI를 설치하려면 오프라인 설치 방법을 사용해야 합니다.
- PowerCLI 모듈이 포함된 ZIP 파일을 https://code.vmware.com/web/tool/vmware-powercli 에서 다운로드합니다(현재 VMware-PowerCLI 12.4.1 기준 약 80MB);
- 아카이브를 컴퓨터의 PowerShell 모듈 디렉터리에 압축 해제합니다(
$env:PSModulePath로 모듈 디렉터리 목록을 확인할 수 있으며, 일반적으로C:\Program Files\WindowsPowerShell\Modules가 사용됨); - 인터넷에서 다운로드한 파일의 차단을 해제합니다:
cd "c:\Program Files\WindowsPowerShell\Modules"
Get-ChildItem * -Recurse | Unblock-File - PowerShell 콘솔을 열고 PowerCLI 모듈을 사용할 수 있는지 확인합니다:
Get-Module -Name VMware.PowerCLI -ListAvailable
현재 PowerShell ISE 또는 Visual Studio Code 세션으로 PowerCLI 모듈을 가져오려면 다음 명령어를 실행합니다:
Import-Module VMware.VimAutomation.Core
모듈 로드 시 다음과 같은 오류 메시지가 표시될 수 있습니다:
Import-Module: File C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.4.0.18627054\VMware.VimAutomation.Sdk.psm1 cannot be loaded because running scripts is disabled on this system.
이 경우 PowerShell 스크립트 실행 정책을 구성해야 합니다. 현재 세션에서 모듈을 사용할 수 있도록 허용하려면:
Set-ExecutionPolicy Unrestricted -Scope Process
원격 컴퓨터에 설치된 PowerCLI 모듈도 활용할 수 있습니다. PSRemoting을 사용하여 원격으로 가져오면 됩니다:
$session = New-PSSession -ComputerName mun-svr01
PowerCLI 모듈을 로컬 컴퓨터로 가져옵니다:
Import-Module -PSsession $session -Name VMware.VimAutomation.Core
작업이 완료되면 세션을 닫는 것을 잊지 마세요:
Remove-PSSession $session
Linux에 PowerCLI 모듈 설치
PowerCLI는 Windows뿐만 아니라 Linux에서도 설치하고 사용할 수 있습니다. 먼저 Linux 호스트에 PowerShell Core를 설치한 후, 콘솔에서 다음 명령어를 실행하여 VMware PowerCLI를 설치합니다:
pwsh
Install-Module -Name VMware.PowerCLI
설치한 모듈을 세션으로 가져옵니다:
Import-Module VMware.PowerCLI
VMware vSphere 및 VM 관리를 위한 기본 PowerCLI 명령어
PowerCLI 모듈에서 제공하는 cmdlet 목록은 다음과 같이 확인할 수 있습니다(2,200개 이상의 명령어 사용 가능):
Get-Command -Module *vmware*
VMware 고객 경험 개선 프로그램(CEIP) 알림을 비활성화하려면:
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false
vCenter Server 또는 ESXi 호스트에 연결하려면:
Connect-VIServer <vCenter_or_ESXi_FQDN>
vCenter Server에 자체 서명 SSL 인증서를 사용하는 경우 PowerCLI가 연결을 차단합니다:
Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server.
Additional Information: Could not establish trust relationship for the SSL/TLS secure channel with authority.
자체 서명 인증서를 무시하려면 다음 설정을 적용합니다:
Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn
가상 머신 관리 명령어
ESXi(또는 vCenter) 서버에 등록된 가상 머신 목록을 표시하려면:
Get-VM
전원이 꺼진 VM만 표시하려면:
Get-VM | Where {$_.Powerstate -ne "PoweredOn"} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table
가상 머신을 시작하려면:
Start-VM -VM MUNTestVM1
VM을 정상적으로 재시작하려면(VMware Tools 에이전트 사용):
Restart-VMGuest -VM MunTestVM1 -Confirm:$False
VM을 종료하려면:
Shutdown-VMGuest -VM MunTestVM1 -Confirm:$False
VM의 스냅샷 목록을 표시하려면:
Get-VM -VM MunTestVM1 | Get-Snapshot| Format-List
VMotion을 사용하여 실행 중인 VM을 다른 호스트로 이동하려면 Move-VM 명령어를 사용합니다. 예를 들어 mun-esxi1의 모든 VM을 mun-esxi2로 이동하려면:
Get-VMHost mun-esxi1|Get-Vm| Move-VM -Destination (Get-VMHost mun-esxi2)
새 가상 머신을 생성하려면 New-VM cmdlet을 사용합니다:
New-VM -Name MunTestVM1 -VMHost mun-esxi1 -ResourcePool Production -DiskGB 20 -DiskStorageFormat Thin -Datastore MUN_MSA2000_Prod1
가상 머신 설정을 변경하려면 Set-VM cmdlet을 사용합니다.
게스트 OS와 상호 작용하기
PowerCLI cmdlet을 사용하면 가상 머신의 게스트 운영 체제와 직접 상호 작용할 수 있습니다. 이를 위해서는 VM에 VMware Tools가 설치되어 있어야 합니다. VMware Tools는 아래와 같이 업데이트할 수 있습니다:
Get-VMGuest MunTestVM1 | Update-Tools
Invoke-VMScript를 사용하면 게스트 Windows OS에서 스크립트나 프로그램을 실행할 수 있습니다:
$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM MunTestVM1 -HostCredential $hostCred -GuestCredential $VMCred -ScriptType Bat
모든 VM에 파일을 복사하려면 다음 명령어를 실행합니다:Get-VM | Copy-VMGuestFile -Source C:\PS\get-size.ps1 -Destination C:\PS\ -LocalToGuest -GuestUser administrator -GuestPassword P@ssdr0w2
호스트 및 인프라 관리 명령어
이 모듈에는 클러스터, 데이터센터, 데이터스토어, ESXi 호스트를 관리하는 cmdlet도 포함되어 있습니다:
Get-VMHost
Get-Datacenter
Get-Cluster
Get-Datastore
Get-VirtualPortGroup
클러스터 내 ESXi 호스트 목록을 표시하려면:
Get-Cluster munprod1 | Get-VMHost | sort name
특정 ESXi 호스트를 유지 보수 모드로 전환하려면:Set-VMhost -VMHost mun-esxi1 -State Maintenance
iSCSI LUN을 ESXi 호스트에 연결하고 그 위에 VMFS 데이터스토어를 생성하려면:Get-ScsiLun -VmHost mun-esxi1 | ftNew-Datastore -Name 'mun_iscsi_datastore' -VMHost mun-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs
팁. PowerCLI는 무료 VMware vSphere Hypervisor에서 읽기 전용 모드로 작동합니다. 즉, 호스트 및 VM 설정을 조회하는 명령어는 사용할 수 있지만 변경은 할 수 없습니다.
PowerCLI 예제 스크립트
VMware 인프라 항목에 대한 정보를 조회하고 반복 작업을 자동화하는 데 활용할 수 있는 PowerCLI 예제들이 다양하게 제공됩니다. 아래 주제들을 참고하여 자신만의 PowerCLI 스크립트를 작성해 보세요:
- VMFS 데이터스토어 여유 디스크 공간 확인
- VMware 가상 디스크(VMDK 파일)와 Windows 드라이브 볼륨 매핑
- IP 또는 MAC 주소로 VMware VM 찾는 방법
- VMware ESXi 호스트에 SNMP 구성
- 멈춘 VMware VM 강제 재시작 방법
- VMware 템플릿에서 Windows 업데이트 자동화
- ESXi 설치 이미지에 드라이버 삽입
- VMware VM 통합 필요 상태 알람
- VM 하드웨어 버전 업그레이드
vSphere PowerCLI는 VMware 인프라를 관리하고 자동화하는 강력한 도구입니다. PowerCLI에는 클라우드 및 온프레미스 VMware 인프라(vSphere, vSAN, vRealize Operations Manager, vCloud Director, Site Recovery Manager, Horizon, NSX-T, VMware Cloud Services, VMware Cloud on AWS 등)를 관리하기 위한 2,000개 이상의 cmdlet이 포함되어 있습니다.