Vous pouvez personnaliser et utiliser l'exemple de script suivant pour télécharger les fichiers de configuration config et viewagent-custom.conf sur plusieurs machines virtuelles (VM) Linux.

Pour copier et coller le contenu du script sans saut de page, utilisez la version HTML de cette rubrique, disponible sur la page de documentation d'Horizon 7 à l'adresse https://www.vmware.com/support/pubs/view_pubs.html.

Entrée du script

Ce script lit un fichier d'entrée, qui est décrit dans la section Fichier d'entrée des exemples de scripts PowerCLI pour déployer des postes de travail Linux. Ce script demande également de façon interactive les informations suivantes :

  • Adresse IP de vCenter Server
  • Nom de connexion de l'administrateur pour vCenter Server
  • Mot de passe de l'administrateur pour vCenter Server
  • Nom de connexion de l'administrateur pour l'hôte ESXi
  • Mot de passe de l'administrateur pour l'hôte ESXi
  • Nom de connexion d'utilisateur pour la VM Linux
  • Mot de passe d'utilisateur pour la VM Linux

Contenu du script

<#
Upload the configuration files config and viewagent-custom.conf to Linux VMs
#>
#------------------------- 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 -------------------------
"-----------------------------------------------------"
write-host  -ForeGroundColor Blue 'Please ensure your config file and viewagent-custom.conf file are in current working directory'
$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
"-----------------------------------------------------"

$csvFile = '.\CloneVMs.csv'
$setConfig = $false
$setCustomConf = $false 
$config_File = "config"
$customConf_File = "viewagent-custom.conf"

#check if config file exists
if(Test-Path $config_File)
{
    $setConfig = $true
    write-host  -ForeGroundColor Yellow '"config" file found'
}
else
{
    write-host  -ForeGroundColor Yellow '"config" file not found, skip it'
}      

if(Test-Path $customConf_File)
{
    $setCustomConf = $true
    write-host  -ForeGroundColor Yellow '"viewagent-custom.conf" file found'
}
else
{
    write-host  -ForeGroundColor Yellow '"viewagent-custom.conf" file not found, skip it'
} 

if (($setConfig -eq $false)-AND ($setCustomConf -eq $false))
{
    write-host  -ForeGroundColor Red 'Both file not found, exit'
    exit
}


#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"
        
    #Try to delete the configuration file from home folder on destination VM
    $cmd = "rm -rf config viewagent-custom.conf"
    Write-Host "Run cmd '$cmd' in VM '$VMName' with user '$guestUser'"
    Invoke-VMScript  -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd
 
    if ($setConfig)
    {
    Write-Host "Upload File '$config_File' to '$destFolder' of VM '$VMName' with user '$guestUser'"
    Copy-VMGuestFile -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -LocalToGuest -Destination $destFolder -Source $config_File
    
    $cmd = "sudo mv ./$config_File /etc/vmware/";
    Write-Host "Move configuraton file: $cmd"
    Invoke-VMScript  -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd
    }
    
    if ($setCustomConf)
    {
    Write-Host "Upload File '$customConf_File' to '$destFolder' of VM '$VMName' with user '$guestUser'"
    Copy-VMGuestFile -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -LocalToGuest -Destination $destFolder -Source $customConf_File
    
    $cmd = "sudo mv ./$customConf_File /etc/vmware/";
    Write-Host "Move configuraton file: $cmd"
    Invoke-VMScript  -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd
    }  
}
Disconnect-VIServer $vcAddress -Confirm:$false
exit

Exécution du script

Les messages suivants proviennent d'une exécution du script :

PowerCLI C:\scripts> .\UpdateOptionFile.ps1
--------------------------------------------------
Please ensure your config file and view-agent.conf file are in current working directory.
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: *******