다음과 같은 샘플 스크립트를 사용자 지정하고 사용하여 복제된 VM(가상 시스템)을 AD(Active Directory) 도메인에 연결할 수 있습니다.

AD 통합에 Winbind 솔루션을 사용하는 경우 복제된 VM에서는 도메인 연결 단계가 실패하기 때문에 이 스크립트를 실행해야 합니다. 이 스크립트에서는 각 VM의 도메인에 연결하는 명령을 실행합니다. OpenLDAP 솔루션을 사용하는 경우에는 이 스크립트를 실행할 필요가 없습니다.

페이지 구분 없이 스크립트 내용을 복사한 후 붙여넣으려면 https://www.vmware.com/support/pubs/view_pubs.htmlHorizon 7 설명서 페이지에서 이 항목의 HTML 버전을 사용하십시오.

스크립트 입력

이 스크립트는 Linux 데스크톱 배포를 위한 샘플 PowerCLI 스크립트의 입력 파일에 설명된 단일 입력 파일을 읽습니다. 이 스크립트는 또한 다음 정보를 대화형으로 요청합니다.

  • vCenter Server의 IP 주소

  • vCenter Server의 관리자 로그인 이름

  • vCenter Server의 관리자 암호

  • ESXi 호스트의 관리자 로그인 이름

  • ESXi 호스트의 관리자 암호

  • Linux VM의 사용자 로그인 이름

  • Linux VM의 사용자 암호

  • 시스템을 도메인에 연결할 권한이 있는 AD 사용자의 로그인 이름

  • 권한이 있는 AD 사용자의 암호

스크립트 내용

<#
.SYNOPSIS
run command "sudo /usr/bin/net ads join"

.DESCRIPTION
The tool is to run the command "sudo /usr/bin/net ads join" to join Linux to AD

.NOTES
#>
#------------------------- Functions -------------------------
function GetInput
{
    Param($prompt, $IsPassword = $false)
    $prompt = $prompt + ": "
    Write-Host $prompt -NoNewLine
    [Console]::ForegroundColor = "Blue"
    if ($IsPassword)
    {
        $input = Read-Host -AsSecureString
        $input = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($input))
    }
    else
    {
        $input = Read-Host
    }
    
    [Console]::ResetColor()
    return $input
}
#------------------------- Handle input -------------------------
"-----------------------------------------------------"
$vcAddress = GetInput -prompt "Your vCenter address" -IsPassword $false
$vcAdmin = GetInput -prompt "Your vCenter admin user name" -IsPassword $false
$vcPassword = GetInput -prompt "Your vCenter admin user password" -IsPassword $true
"-----------------------------------------------------"
$hostAdmin = GetInput -prompt 'Your ESXi host admin user name, such as root' -IsPassword $false
$hostPassword = GetInput -prompt "Your ESXi admin user password" -IsPassword $true
"-----------------------------------------------------"
$guestUser = GetInput -prompt 'Your VM guest OS user name' -IsPassword $false
$guestPassword = GetInput -prompt 'Your VM guest OS user password' -IsPassword $true
"-----------------------------------------------------"
$adUser = GetInput -prompt 'Type the AD user name to join the AD' -IsPassword $false
""
"`nPlease type the AD user password."
"Plase note that special character in password may not work with the script"
$adUserPassword = GetInput -prompt 'Your AD user password' -IsPassword $true
"-----------------------------------------------------"

#$csvFile = Read-Host 'Csv File '
$csvFile = '.\CloneVMs.csv'

#------------------------- Main Script -------------------------

#Connect to vCenter
#Connect to vCenter
$VC_Conn_State = Connect-VIServer $vcAddress -user $vcAdmin -password $vcPassword
if([string]::IsNullOrEmpty($VC_Conn_State))
{
   Write-Host 'Exit since failed to login vCenter'
   exit
}
else
{
  Write-Host 'vCenter is connected'
}

#Read input CSV file
$csvData = Import-CSV $csvFile

$destFolder = "/home/$guestUser/"

#Handle VMs one by one
foreach ($line in $csvData)
{
    "`n-----------------------------------------------------"
    $VMName = $line.VMName
    write-host -ForeGroundColor Yellow "VM: $VMName`n"
    
    $cmd = "sudo /usr/bin/net ads join -U $adUser%$adUserPassword"
    Write-Host "Run cmd 'sudo /usr/bin/net ads join' in VM '$VMName' with user '$guestUser'"
    Invoke-VMScript  -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd
}

Disconnect-VIServer $vcAddress -Confirm:$false
exit

스크립트 실행

스크립트를 실행하면 다음 메시지가 표시됩니다.

PowerCLI C:\scripts> .\ClonedVMs_JoinDomain.ps1
--------------------------------------------------
Your vCenter address: 10.117.44.17
Your vCenter admin user name: administrator
Your vCenter admin user password: *******
--------------------------------------------------
Your ESXi host admin user name, such as root: root
Your ESXi host admin user password: *******
--------------------------------------------------
Your VM guest OS user name: ViewUser
Your VM guest OS user password: *******
--------------------------------------------------
Type the AD user name to join the AD: viewadmin
Please type the AD user password.
Please note that special character in password may not work with the script.
Your AD user password: *******