Powershell – Iniciar todas nuestras VMs

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.

Advertisements

Powershell – almacenar credenciales de acceso encriptadas para nuestros scripts

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

 

 

Powershell – pocas lineas – obtener los ultimos eventos

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: