VMware vSphere PowerCLI 명령 프롬프트에서 VMware 인프라를 관리하기 위한 PowerShell 모듈 세트입니다. PowerCLI를 사용하여 가상 머신, 데이터 저장소, 네트워크 또는 사용자의 상태를 확인하고, 다양한 설정을 관리하고, 새 개체를 생성하고, ESXi, vCenter Server, vSphere, vSAN 및 기타 VMware 제품에 대한 자동화 작업에서 PowerShell을 사용할 수 있습니다.
현재 VMware는 PowerShell Core(7.0+) 전용 PowerCLI 버전을 개발 중입니다. 이 PowerShell 버전은 플랫폼 간이며 Windows, Linux 또는 macOS에서 사용할 수 있습니다. Windows PowerShell 5.x용 이전 PowerCLI 모듈에 대한 보안 수정 사항만 릴리스됩니다. 업데이트된 PowerShell Core 버전을 사용하는 것이 좋습니다.
Windows에 VMware PowerCLI 모듈을 설치하는 방법
Windows에서 온라인 또는 오프라인으로 VMware PowerCLI를 설치할 수 있습니다.
PowerShell 갤러리에서 온라인으로 PowerCLI를 설치하려면 아래 명령을 실행하십시오.
Install-Module -Name VMware.PowerCLI
현재 사용자만을 위한 모듈을 설치하려면:
Install-Module VMware.PowerCLI -Scope CurrentUser
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
choco search vmware
그리고 그것을 설치하십시오:
choco install vmware-powercli-psmodule
PowerCLI 모듈은 아직 winget에서 사용할 수 없습니다.
PowerCLI를 격리된 컴퓨터(연결이 끊긴 환경)에 설치하려는 경우 오프라인 설치 프로그램을 사용할 수 있습니다.
- PowerCLI 모듈 https://code.vmware.com/web/tool/vmware-powercli를 사용하여 ZIP 파일을 다운로드합니다(현재 VMware-PowerCLI 12.4.1에서 ZIP 아카이브 크기는 약 80MB임).
- 컴퓨터의 PowerShell 모듈이 있는 디렉토리에 아카이브 압축을 풉니다(
$env:PSModulePath
를 사용하여 PoSh 모듈 디렉토리 목록을 얻을 수 있습니다. ). 일반적으로C:\Program Files\WindowsPowerShell\Modules
사용됩니다. - 인터넷에서 다운로드한 파일 차단 해제:
cd “c:\Program Files\WindowsPowerShell\Modules”
Get-ChildItem * -Recurse | Unblock-File - PowerCLI 콘솔을 열고 PowerCLI 모듈을 지금 사용할 수 있는지 확인합니다.
Get-Module -Name VMware.PowerCLI –ListAvailable
PowerCLI 모듈을 현재 PowerShell ISE 또는 Visual Studio Code 세션으로 가져오려면 다음 명령을 실행하십시오.
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 모듈 설치
Windows와 Linux 모두에서 PowerCLI를 설치하고 사용할 수 있습니다. 먼저 Linux 호스트에 PowerShell Core를 설치합니다. 그런 다음 콘솔에서 다음 명령을 실행하여 VMware PowerCLI를 설치합니다.
pwsh
Install-Module -Name VMware.PowerCLI
모듈을 세션으로 가져오기:
Import-Module VMware.PowerCLI
VMware vSphere 및 VM을 관리하기 위한 기본 PowerCLI 명령
다음과 같이 PowerCLI 모듈에서 cmdlet 목록을 가져올 수 있습니다(2200개 이상의 명령 사용 가능).
Get-Command –Module *vmware*
VMware CEIP(고객 환경 개선 프로그램) 알림을 비활성화하려면:
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false
vCenter Server 또는 ESXi 호스트에 연결하려면:
Connect-VIServer <vCenter_or_ESXi_FQDN>
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 도구 에이전트 사용):
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 명령이 사용됩니다. 예를 들어 모든 VM을 mun-esxi1에서 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을 사용하여 가상 머신 설정을 변경합니다.
PowerCLI cmdlet을 사용하여 가상 머신의 게스트 운영 체제와 상호 작용할 수 있습니다. 이를 위해서는 VM에 VMware Tools가 설치되어 있어야 합니다. 아래와 같이 VMware Tools를 업데이트할 수 있습니다.
Get-VMGuest MunTestVM1 | Update-Tools
Invoke-VMS를 사용하여 게스트 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 | ft
New-Datastore -Name 'mun_iscsi_datastore' -VMHost mun-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs
PowerCLI 예제 스크립트
PowerCLI를 사용하여 VMware 인프라 항목에 대한 정보를 얻고 웹 사이트에서 일부 작업을 자동화하는 몇 가지 예가 있습니다. 다음 기사의 예제를 사용하여 고유한 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 등)를 관리하기 위한 2000개 이상의 cmdlet이 포함되어 있습니다.