VMware vSphere용 기본 PowerCLI 스크립팅

이전에 우리는 PowerCLI에 대해 살펴보았습니다. 그것이 무엇인지, 어떻게 설치하는지, 그리고 Windows Powershell ISE와 통합하는 방법에 대해서요. 이제 PowerCLI 명령렛, 루프를 포함한 기본 스크립팅에 대해 살펴보겠습니다.

기본 PowerCLI 스크립팅

PowerCLI를 사용하여 vSphere 환경에서 정보를 가져오기 시작하는 것이 얼마나 쉬운지 확인하기 위해 몇 가지 기본 PowerCLI 명령렛을 살펴보겠습니다. 아래의 내용은 전체적인 튜토리얼을 의미하는 것이 아니라, PowerCLI에 대한 소개이자 명령렛을 실행하고 환경을 자동화하기 시작하는 방법입니다.

우선 실행해야 할 첫 번째 명령렛은 vSphere 환경에 실제로 연결하는 것입니다. ESXi 호스트나 vCenter Server에 직접 연결할 수 있습니다.

연결하려면 PowerCLI가 활성화된 PowerShell 세션에서 다음 명령을 실행하세요:

  • connect-viserver –server 〈yourserver〉

명령을 실행하면 로그인 자격 증명을 입력하라는 메시지가 표시됩니다. ESXi 서버나 vCenter Server에 대한 사용자 이름과 비밀번호를 입력하세요.

ESXi나 vCenter에 연결할 때 실행할 수 있는 가장 기본적인 명령 중 하나는 환경에서 모든 VM을 보는 것입니다. 게스트 VM에 대한 정보를 표시하기 위해 get-vm 명령렛을 사용합니다.

  • Get-VM - get-vm 명령렛은 연결된 호스트에서 실행 중인 VM을 나열합니다.

get-vm 명령렛에서 보다 상세한 정보를 얻으려면 다음 명령을 실행하세요:

  • Get-VM | fl – 손님 운영 체제, 리소스 풀, VM 하드웨어 버전 수준, 위치한 폴더 등과 같은 더 자세한 정보를 표시합니다.

이제 Get-VM 명령어에서 특정 유용한 정보를 반환해 봅시다. 전원이 꺼진 상태인 VM을 찾아 보겠습니다. 우리는 Get-VM 명령어에서 정보를 얻은 다음, 그것을 where-object로 파이핑하여 쿼리하려는 특정 정보를 선택할 수 있습니다 – 이 경우에는 PowerState입니다. 여러분이 보시다시피, 다양한 VM 정보를 얻고 이 정보를 다른 PowerShell 명령어로 파이핑하는 것에는 무한한 가능성이 있습니다.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"}

보시다시피, 이렇게 하면 “PoweredOff” PowerState에 있는 VM만 표시됩니다. 이것은 매우 유용할 수 있습니다. 심지어 위의 명령 결과를 Start-VM 명령어로 파이핑할 수도 있습니다. 따라서 기본적으로 꺼진 VM을 모두 가져와서 해당 VM을 켤 수 있습니다.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM

특정 VM을 종료하려면 어떻게 해야 할까요? 이것도 가능합니다. VM을 이름으로 호출한 다음 Stop-VMGuest 명령어를 사용하여 게스트 운영 체제 종료를 시작할 수 있습니다.

  • Get-VM 〈yourvm〉 | Stop-VMguest

작업의 확인을 받지 않으려면 -confirm:false 매개 변수를 추가할 수 있습니다:

우리가 실행 중인 VM 중에서 할당된 CPU가 1개 이상인 것이 몇 개 있는지 확인하려고 합니다. 다시 말해, where-object 명령어를 사용하여 NumCpu 개체를 선택할 수 있습니다.

  • Get-VM | where-object {$_.NumCpu –gt 1 }

PowerCLI 반복문

반복문을 사용하면 선택된 개체나 반복할 횟수에 대해 동일한 작업을 여러 번 수행할 수 있습니다. 예를 들어, foreach 루프를 사용하면 특정 작업을 여러 번 반복할 수 있습니다. 아래와 같이 의사 코드로 설정됩니다:

foreach ($var in $vars){
무언가를 수행...
}

특정한 객체에 작업을 수행할지를 구체적으로 지정하려면, 예를 들어, 특정 텍스트 파일에서 VM 목록을 반복할 수 있습니다. 텍스트 파일을 채우려면 원하는 속성을 선택하고 Get-VM 명령어를 실행한 다음 해당 명령을 텍스트 파일로 파이프합니다. 그런 다음 PowerShell을 사용하여 텍스트 파일을 읽고 VM을 배열에 넣어 반복 및 작업을 수행할 수 있습니다. 아래에서는 목록에 있는 VM에 새 네트워크 어댑터를 추가하는 중입니다.

Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt

$vms = get-content c:\VMs.txt

Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Port group name〉" -Type "VMXNET3" –startconnected
}

자원

웹 상에는 개인 블로그 사이트, 공식 문서, 코드 샘플 등 많은 훌륭한 자료들이 있습니다. 내가 발견한 것은 당신이 하고 싶은 것을 생각한다면, 아마도 이미 당신이 원하는 것을 수행할 PowerCLI 코드 한 줄을 작성한 사람이 있을 것이라는 것입니다. 좋은 점은 보통 당신이 하고 싶은 것과 매우 유사한 것을 찾을 수 있으며, 기본 사항을 배운 후에는 매우 적은 수정으로 당신의 요구에 맞게 수정할 수 있다는 것입니다. 또한 이렇게 함으로써, 당신은 PowerCLI를 배우고 작동하는 방법뿐만 아니라 수행해야 할 작업에 코드를 수정하는 방법도 배우게 됩니다.

A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.

또한 해체하고 수정할 수 있는 스크립트와 스크립트 예제가 들어있는 책이 많이 있습니다. 대부분의 경우, PowerCLI에 능숙해지는 과정에서 다른 사람으로부터 배운 지식을 기꺼이 공유해주는 VMware 관리자 커뮤니티를 염두에 두세요. 구체적인 도움이 필요하거나 일반적인 원칙에 대한 도움을 요청하세요.

생각들

PowerCLI는 매우 강력합니다. 위에 나와 있는 예제만으로도 우리는 겨우 표면을 긁은 것에 불과합니다. 반복적으로 수행하는 작업이나 웹 클라이언트에서 수행하기 번거로운 작업은 대부분 PowerCLI로 스크립팅하는 데 적합합니다. 사실, 대부분은 자동으로 수행해야 하는 작업이나 vSphere의 다른 작업을 기반으로 하는 작업 또는 다시 말해 스크립팅에 적합한 반복적인 작업이 있기 때문에 PowerCLI에 처음 접하는 것입니다.

최고의 방법은 PowerCLI를 다운로드하고 설치한 후 집 랩과 같은 랩 환경에서 사용하는 것입니다. VMware vSphere 환경의 실제 파워는 자동화를 사용하여 vSphere를 제어할 수 있는 잠재력을 보는 경우에만 해제됩니다. 따라서 PowerCLI로 스크립팅을 시작하면 다시 돌아보지 않을 것입니다!

Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/