Que tal Gente, tuve un requerimiento de un script sencillo para el inicio de todas las VMs que se encuentran registradas en un vCenter, aquí les dejo el codigo:
$cred=get-credential
echo “INGRESA IP O FQDN DEL VCENTER o ESX/ESXi”
$serv=read-host
connect-viserver –server $serv -credential $cred
$vms = Get-VM
$vms | Select name | Export-CSV c:\listavms.csv -NoTypeInformation
$i = 1
$vms_1 = Import-CSV c:\listavms.csv
ForEach ($vm in $vms_1) {
Start-VM -VM $vm.name
If (($i%10) -eq 0) {
Sleep 300
}
$i = $i + 1
}
Disconnect-VIServer -Confirm:$false
Posiblemente existe mejores maneras de realizar esto, pero cumplió con su objetivo.
Que tal gente, creo que es básico proteger los usuarios y passwords que utilizamos en nuestros scripts de powershell ya que puede ser que estos caigan en manos de personas no autorizadas o simplemente que no sean las indicadas. Existe una manera muy fácil de encriptar nuestros accesos utilizando un cmdlet llamado New-VICredentialStoreItem
Vamos a ver un ejemplo de como realizarlo:
Paso 1-. Abrimos nuestra consola de vSphere PowerCLI, en este caso estaremos almacenando las credenciales de mi host esxi01.hispavirt.test.com
new-vicredentialstoreitem -host esxi01.hispavirt.test.com -user root -password password -file C:\Scripts\esxi01.xml

esto nos creará un archivo .xml en la ruta especificada, el cual contiene la información de nuestro acceso con la password encriptada:
<?xml version=”1.0″ encoding=”UTF-8″?>
<viCredentials>
<version>1.0</version>
<passwordEntry>
<host>esxi01.hispavirt.test.com</host>
<username>root</username>
<password>Oyo4ODwkOS9LpW6tJ2dgApd7wS8wXxCnuhwgK735CJ9JuFstw1Jav2QhLFXh8a1LoMD+CaBDurJyp0PyJUee7uEaqDNQjouIVd5/Wud2CX07ID4ht0ujsUlcZtdbE85o34k4E5wmr22BuW8emKsHsOKaA0jcIePiIqI9T9xo+Y4=</password>
</passwordEntry>
</viCredentials>
Paso 2-. Una vez listo nuestro archivo con nuestras credenciales encriptadas, solo es cuestión de en cualquiera de nuestros scripts obtener dicha información utilizando el cmdlet get-vicredentialstoreitem, aquí les dejo un ejemplo para obtener un listado de VMs y exportarla a un archivo .CSV:
$creds = Get-VICredentialStoreItem -file C:\Scripts\esxi01.xml
Connect-VIServer -Server $creds.Host -user $creds.User -password $creds.Password
$vms = Get-VM
$vms | Select name | Export-CSV c:\listavms.csv -NoTypeInformation
Que tal Gente en este post les voy a dejar unas lineas de codigo de powershell que podrán estar utilizando para obtener los últimos eventos de un objeto del vcenter, utilizando el cmdlet Get-VIEvent
Obtener los eventos de nuestro cluster llamado “HA-DRS” de las ultimas 5 horas:
Get-Cluster “HA-DRS” | Get-VIEvent -Start (Get-Date).AddHours(-5) | Format-Table CreatedTime, FullFormattedMessage -AutoSize
Obtener los eventos de una VM en especifico, en este caso la VM “win2k3″ por las ultimas 5 horas:
Get-VM “win2k3” | Get-VIEvent (Get-Date).AddHours(-5)| Format-Table CreatedTime, FullFormattedMessage -AutoSize
Podemos filtrar los mensajes para errores:
Get-Cluster “HA-DRS” | Get-VIEvent -Type Error | Format-Table CreatedTime, FullFormattedMessage -AutoSize
El salida de esta linea de codigo nos da algo como esto:

Recent Comments