본문 바로가기
IT/Powershell

[VMware] 연결서버(HVServer) Powershell로 Pool에 VM 추가, 사용자 추가 스크립트

by 퐁시냥 2022. 1. 27.

Windows 에서 제공해주는 Powershell Script는 정말 유용한데, VMware Horizon과 연동할 때 특히 유용하다. 

특정 모듈만 import 해주면 VDI 자동화(Automation)을 위한 함수들을 사용할 수 있다. 

 

vCenter와 연동해서 VM 생성, 삭제는 레퍼런스가 많아서 쉽게 구글링 할 수 있었는데, 

Connection Server와 연동해서 풀에 VM을 생성하고 사용자를 할당하는 부분은 레퍼런스를 확인하기 어려웠다.

그래서 아주 쉽게 정리한 자료니 확인해보기!!!

 

0. Import VMware Module

VMware 에서 제공하는 vCenter Server, Connection Server(HVServer) 연동 함수를 사용하려면 모듈을 Import 해야한다. 

해당 모듈을 Import 하려면 먼저 VMware에서 제공하는 PowerCLI 를 설치해야한다. 

Import-Module -Name VMware.VimAutomation.HorizonView
Install-Module -Name Vmware.PowerCLI

1. Connect-HVServer

먼저 Connection Server 와 연결하는 작업을 해야한다. 

 

함수 원문

Connect-HVServer
[-Server]  <String>
[-Domain  <String>]
[-Force]
[-NotDefault]
[-Password  <SecureString>]
[-User  <String>]
[CommonParameters]

 

Example1

  • Server : 서버 IP or Hostname
  • User : HV 서버(Connection Server)에 연결할 사용자 이름(Username) 
  • Password : HV 서버(Connection Server)에 연결할 사용자 패스워드(Password)
  • Domain : 연결할 HV 서버(Connection Server)의 도메인 이름
Connect-HVServer -Server server -User username -Password pass -Domain domain

 

Example2

다른 방식으로 연결서버(Connection Server)에 연결하는 방법이다.

Connect-HVServer -Server server -User username@domain -Password pass

 

파라미터 

Required Parameter Name Type Position Description
required Server String 1 Specifies the IP or FQDN of the Horizon Connection server on which the Horizon API service runs.
required Credential PSCredential named Specifies a PSCredential object that contains credentials for authenticating with the server. For more information about the server authentication logic of PowerCLI, run "help about_server_authentication".
optional Domain String named Specifies the NetBIOS name or short form of the DNS of the Horizon Connection server on which the Horizon API service runs.
optional Force SwitchParameter named Suppresses all user interface prompts during the cmdlet execution such as multiple default servers and invalid certificate action.
optional NotDefault SwitchParameter named Specifies that you do not want to save the specified servers as default servers.

참고 


2. Get-HVMachineSummary

Connection Server(연결서버/HVServer)에 등록된 VM을 리스트를 확인하는 방법이다. 

변수에 저장을 하면 유용하게 사용할 수 있다. 

 

Example1

Connection Server에 등록된 VM 확인.

$machines=Get-HVMachineSummary

Add-HVDesktop Powershell
Add-HVDesktop Powershell

Example2

Out-GridView를 활용하면 Connection Server에 등록된 VM을 표로 확인할 수 있다.

'조건 추가'로 엑셀에서 필터를 설정한 것처럼 필터링 할 수 있어 유용하다.

$machines=Get-HVMachineSummary | Out-GridView

Add-HVDesktop Out-GridView
Add-HVDesktop Out-GridView

Example3

리스트에 Connection Server(연결서버)에 있는 VM을 저장하는 스크립트. 

리스트로 관리하면 스크립트 내에서 특정 상태에 해당하는 VM을 발췌하거나 파일로 저장할 때 유용하다.

  • User : VM에 할당된 사용자 이름
  • Desktop : VM의 Hostname
  • Poolame : VM이 속한 풀 이름
$machines=Get-HVMachineSummary

##Create empt array
$list=@()

##Generate list of users and their machines.
$machines | foreach {
    $temp=$null
    $temp=new-object system.object
    $temp | Add-Member -Type NoteProperty -Name User -Value $_.namesdata.username
    $temp | Add-Member -Type NoteProperty -Name Desktop -Value $_.base.name
    $temp | Add-Member -Type NoteProperty -Name PoolName -Value $_.base.desktopname    
    $list+= $temp
    }

Example4

Connectino Server 에서 연결해제(DISCONNECTED)된 VM 리스트.

$DisconnectedVMs = Get-HVMachineSummary -State DISCONNECTED
$DisconnectedVMs | Out-GridView

3. Add-HVDesktop

VM을 생성해도 vCenter에서는 생성된 VM을 확인할 수 있지만, Connection Server(HVServer)에서는 확인이 불가하다. 

HVServer에도 데스크탑을 특정 Pool에 할당해주어야 한다.

 

Example1

Connection Server의 특정 풀에 VM 추가하는 방법. 스크립트를 이용하면 자동으로 추가할 수 있다. 

vCenter 에서 생성된 VM 이지만 Connection Server 에 추가를 하지 않으면 Connection Server(CVM)에서 수동으로 추가해줘야함. 

Add-HVDesktop -PoolName 'PoolName' -Machines 'vm-01'

Example2

Connection Server의 $hvPoolName에 $vmName을 할당하는 예시.

 

# Add New VM into Connection Server Pool 
Add-HVDesktop -PoolName $hvPoolName -Machines $vmName

4. Set-HVMachine 

Connection Server(연결서버/HVServer)에 도메인의 사용자를  특정 Host VM 에 할당하는 방법.

이걸 못찾아서 엄청 해메었는데 정말 간단했다!!!! EASY~~~~~

 

아래 스크립트를 실행하면 Connection Server에서 할당된 사용자에서 정상적으로 할당된 것을 확인할 수 있다. 

Example1

주의 해야 할 부분은 User 에 도메인을 추가해서 작성해야 한다는 것 (ex. Domain\Username)

도메인을 추가하지 않으면 에러가 발생한다.

Set-HVMachine -MachineName $Hostname -User $Username

 

댓글