Friends I have the two following scritps the first one is constantly pinging the Ip of a VM at the moment that there is no ping a cloned VM is turned on
The second script simply clones a VM origena to that VM I ping with the first script
Well the inconvniente is the following:
Run the two scripts at the same time the ping script works correctly, then while cloning is done with the other script at the time of the cloning the sentence "else" of the first script is executed is like missing the vm ping but in this case it does not lose connection that could be happening...
SCRIPT PING
----------------
#IP VM origen
$VMIP= "172.16.6.200"
##Sentencia para verificacion de conexion a VM origen
do{
$i=1
$i++
##Ping hacia la IP de la VM Origen
$results = gwmi -query "SELECT * FROM Win32_PingStatus WHERE Address = '$VMIP'"
##Si tenemos conexion mostrara mensaje que la VM esta activa
if ($results.StatusCode -eq 0) {
Write-Host "$VMIP online"
}
##Caso contrario mostrara que esta offline, desctivara vNIC de la Origen y encendera la ultima VM clonada
else {
Write-Host "$VMIP offline"
##Coneccion a vCenter
connect-viserver -server $vcenter_server -User $vcenter_user -Password $vcenter_pwd
#Nombre de la VM Origen
$VMorigen= "SRV-SERVER"
#Nombre de la ultima VM clonada
$VMclone= "$($VMorigen)-$((Get-Date).ToString('MMddyyyy'))"
Get-VM -Name SRV-SERVER | Get-NetworkAdapter | Set-NetworkAdapter -Connected:$false -Confirm:$false
GET-VM -Name $VMclone | Start-VM -Confirm:$False
##Desconnexion de vCenter
Disconnect-VIServer -Confirm:$false
##Para sentencia en caso de no tener conexion
break
}
}while($i -le 9999)
----------
SCRIPT CLONE VM
-----------------
#Validacion en caso de noter certificado en el vcenter
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
##Coneccion a vCenter
connect-viserver -server $vcenter_server -User $vcenter_user -Password $vcenter_pwd
#Nombre de la VM Origen
$VMorigen = "SRV-SERVER"
# Ip o hostname de host en donde se clonara la VM
$esxi = "172.16.1.51"
#Nombre para VM clonada con fecha de clonacion
$newVMclone = "$($VMorigen)-$((Get-Date).ToString('MMddyyyy'))"
#Variable para que busque el clone de hace un dia
$oldCloneName = "$($VMorigen)-$((Get-Date).AddDays(0).ToString('MMddyyyy'))"
#Datastore en donde se guardara la VM
$datastore=Get-datastore -Name 'Datastore-1'
#Parametro para que la VM se guarde en un Datastore compratido dentro de un cluster
$ds = Get-Datastore | where{$_.Type -eq 'VMFS' -and $_.ExtensionData.Summary.MultipleHostAccess} | Sort-Object -Property FreeSpaceGB -Descending | select -First 1
#Parametro para que la VM se guarde en cualquier host de lcluster
$esx = Get-Cluster -VM $VMorigen | Get-VMHost | Get-Random
##Elimina VM de hasta 1 dia en base al nombre del VM clonada
Get-VM -Name $oldCloneName -ErrorAction SilentlyContinue | Remove-VM -DeletePermanently:$true -Confirm:$false
##Clonacion de VM, disco virtual tipo thick y carpeta de almacenaiento de la VM
if(New-VM -VM $VMorigen -Name $newVMclone -VMHost $esxi -DiskStorageFormat Thin -Datastore $datastore -Location "Laboratorios"){
"DONE"
}else{
"Error al clonar la VM"
}
##Desconnexion de vCenter
Disconnect-VIServer -Confirm:$false
-------------------