alessiomariotti
Contributor
Contributor

Avvio e spegnimento VM esxi 6.5 / 6.7

vorrei avviare e spegnere una vm ad un determinato orario. 

automatizzando il tutto e non farlo manualmente ogni giorno.

0 Kudos
3 Replies
fabio1975
Commander
Commander

Ciao 

Da quello che capisco dall'oggetto della Post gli host ESXi, su cui vuoi spegnere e accendere le VM in maniera automatica, non sono gestiti da un vSphere vCenter. In questo caso hai bisogno di:

- Utilizzare la PowerCLI con cui creare uno script di spegnimento

- Avere un server Windows  o linux su cui installare la powercli e su questo creare un task automatico che lancia lo script di spegnimento. 

Lo script accederà in maniera automatica al tuo host ESXi (utilizzando le credenziali di root) e spegnerà o accenderò la vm o le vm.

Per lo script ne puoi trovare degli esempi in rete oppure puoi utilizzare questi esempi:

## SCRIPT DI Spegnimento 

$creds = Get-VICredentialStoreItem -file  C:\Attimo_Fabio\qa.creds -Host <nome del tuo host ESXi>

#Connect to the server using the credentials file

Connect-VIServer -Server $creds.host -User $creds.User -Password $creds.Password

foreach($vmlist in (Get-Content -Path C:\Attimo_Fabio\vmlist.txt)){
    $vm = Get-VM -Name $vmlist
    Shutdown-VMGuest -VM $vm -Confirm:$false
    }

 

Disconnect-VIServer -Force -Confirm:$false
 
##

## Script di Poweron

$creds = Get-VICredentialStoreItem -file  C:\Attimo_Fabio\qa.creds -Host <nome del tuo host ESXi>

 

#Connect to the server using the credentials file

 

Connect-VIServer -Server $creds.host -User $creds.User -Password $creds.Password

 

foreach($vmlist in (Get-Content -Path C:\Attimo_Fabio\vmlist.txt)){
    $vm = Get-VM -Name $vmlist
    Start-VM -VM $vm -Confirm:$false
    }
 
Disconnect-VIServer -Force -Confirm:$false
##
 
Per memorizzare le credenziali nel file qa.creds utilizza il seguente comando:
New-VICredentialStoreItem -User root -Password <password> -Host <hostESXi> -File C:\Attimo_Fabio\qa.creds
 
Nel file vmlist.txt inserisci i nome delle VM che vuoi spegnere (i nomi sono quelli che vedi nell'intentory degli host ESXi)
Poi volendo puoi personalizzare gli script mettendo dei controlli se le vm si sono spente o accese, l'invio di mail di log ecc...
 
Per l'installazione dei PowerCLI  puoi seguire questo link:
0 Kudos
SommyJo
Enthusiast
Enthusiast

Ciao, sto provando a creare lo script che hai segnalato, ma incontro più di un errore.
In PowerShell (administrator) Ho installato PowerCli con:
Install-Module VMware.PowerCLI -Scope CurrentUser

per poi eseguire:

New-VICredentialStoreItem -User root -Password MyPassword -Host 192.168.103.245 -File C:\Script\qa.creds

Però compare l'errore:

New-VICredentialStoreItem : Comando 'New-VICredentialStoreItem' trovato nel modulo 'VMware.VimAutomation.Core', ma
impossibile caricare il modulo. Per ulteriori informazioni, eseguire 'Import-Module VMware.VimAutomation.Core'.
In riga:1 car:1
+ New-VICredentialStoreItem -User root -Password MyPassword -Host 192.168 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (New-VICredentialStoreItem:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CouldNotAutoloadMatchingModule

 

Con Import-Module VMware.VimAutomation.Core compare invece:

Import-Module : Impossibile caricare il file C:\Program
Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\13.0.0.20791442\VMware.VimAutomation.Sdk.psm1. L'esecuzione
di script è disabilitata nel sistema in uso. Per ulteriori informazioni, vedere about_Execution_Policies all'indirizzo
https://go.microsoft.com/fwlink/?LinkID=135170.
In riga:1 car:1
+ Import-Module VMware.VimAutomation.Core
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Errore di protezione: (:) [Import-Module], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

 

Il Link indicato nel messaggio spiega bene il perché, ma non come risolvere questo problema.
Che diritti vanno applicati?

Io devo creare due script.
Uno per fare lo shutdown di una ESXi 6.5/6.7 (Free)
L'altro per fare il backup dei file di configurazione (che ancora non ho trovato in rete).

Infine, con il tuo script io devo elencare tutte le VM. Non c'è modo di fare lo shutdown di tutte, nell'ordine prestabilito dal server?

0 Kudos
fabio1975
Commander
Commander

Ciao

Per risolvere l'errore 

Import-Module : Impossibile caricare il file C:\Program

prova ad eseguire il seguente comando:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

mentre per non dover saper in precedenza quali VM sono da elencare puoi procedere inserendo:

####

Connect-VIServer -Server $creds.host -User $creds.User -Password $creds.Password
(Get-VM).where{$_.PowerState -eq 'PoweredOn'} | Select Name -ExpandProperty Name | Out-File C:\Attimo_Fabio\vmlist.txt
foreach($vmlist in (Get-Content -Path C:\Attimo_Fabio\vmlist.txt)){
    $vm = Get-VM -Name $vmlist
    Shutdown-VMGuest -VM $vm -Confirm:$false
    }

 

Disconnect-VIServer -Force -Confirm:$false
####
 
Preferisco estrarre l'elenco delle VM accesse perchè non so quali sono le VM accese in quel momento e tengo nel file di testo le VM effettivamente da riaccendere alla riaccensione.
 
Fabio 

 

0 Kudos