S T A C K F I R E

Loading

  • contacto@stackfire.com

La automatizaci√≥n ha sido una gran parte de la nueva era DevOps. En los √ļltimos 3 a√Īos han nacido una cantidad considerable de herramientas para disminuir el tiempo de administraci√≥n manual dentro de los entorno VMware. Dos herramientas sumamente poderosas para cualquier vCenter son vCenter Orchestrator y PowerCLI.

PowerCLI es una herramienta ya con un buen tiempo en el mercado y su fortaleza radica en la versatilidad de poder controlar grandes granjas de VMWare desde una línea de comandos, para cualquier tarea repetitiva generalmente hay una línea en PowerCli que lo facilita todo.

A continuación, se muestra una lista de scripts prácticos ordenados por categoría, poco a poco iré enriqueciendo más este listado. Si alguno de ustedes desea aportar algo, puede hacerlo escribiendo a soporte-vmware@stackfire.com

Espero que los encuentren √ļtiles¬†ūüôā

 

Virtual Machines

Lista de todos las VM y sus¬†tama√Īos de disco

ForEach ($VM in Get-VM ){($VM.Extensiondata.Guest.Disk | Select @{N="Name";E={$VM.Name}},DiskPath, @{N="Capacity(MB)";E={[math]::Round($_.Capacity/ 1MB)}}, @{N="Free Space(MB)";E={[math]::Round($_.FreeSpace / 1MB)}}, @{N="Free Space %";E={[math]::Round(((100* ($_.FreeSpace))/ ($_.Capacity)),0)}})}

Calcular el uso¬†promedio¬†de¬†CPU,¬†memoria,¬†red¬†y¬†disco¬†para m√°quinas virtuales activadas en los √ļltimos¬†30 d√≠as, intervalos de 5 minutos. Puede modificar el intervalo de ‘AddDays (-N)’ y ‘-IntervalMins 5’ si es necesario.

Get-VM | Where {$_.PowerState -eq "PoweredOn"} | Select Name, Host, NumCpu, MemoryMB, ` @{N="CPU Usage (Average), Mhz" ; E={[Math]::Round((($_ | Get-Stat -Stat cpu.usagemhz.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}}, ` @{N="Memory Usage (Average), %" ; E={[Math]::Round((($_ | Get-Stat -Stat mem.usage.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} , ` @{N="Network Usage (Average), KBps" ; E={[Math]::Round((($_ | Get-Stat -Stat net.usage.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} , ` @{N="Disk Usage (Average), KBps" ; E={[Math]::Round((($_ | Get-Stat -Stat disk.usage.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} |` Export-Csv -Path d:AverageUsage.csv

Listar todas las VM que tienen montados un ISO vía CD/DVD

Get-VM | Get-CDDrive | select @{N="VM";E="Parent"},IsoPath | where {$_.IsoPath -ne $null}

Desmontar los ISO de las VMs que están montados vía CD/DVD

Get-VM | Get-CDDrive | where {$_.IsoPath -ne $null} | Set-CDDrive -NoMedia -Confirm:$False

Actualizar VMware Tools¬†desde un listado de IP’s en un archivo l√≠nea por l√≠nea¬†

Get-Content PATH-TO-FILE | ForEach-Object {Update-Tools $_ -NoReboot}

Listar snapshots en todos los ESX

get-vm | get-snapshot | Format-Table -Property VM,Name,Created,Description, SizeMB

Cambiar en caliente el adaptador a VMXNET3 de todas las VMs que lo soporten

$VMGpo = Get-content PATH-TO-FILE
Get-VM $VMGpo | Get-NetworkAdapter | set-networkadapter -type vmxnet3 -confirm:$false

Datastores

Lista del¬†tama√Īo de partici√≥n¬†para cada VM:

ForEach ($VM in Get-VM ){($VM.Extensiondata.Guest.Disk | Select @{N="Name";E={$VM.Name}},DiskPath, @{N="Capacity(MB)";E={[math]::Round($_.Capacity/ 1MB)}}, @{N="Free Space(MB)";E={[math]::Round($_.FreeSpace / 1MB)}}, @{N="Free Space %";E={[math]::Round(((100* ($_.FreeSpace))/ ($_.Capacity)),0)}})}

Networking

Agregar un Port Group a todos los ESX contenidos en un cluster.

Get-Cluster "CLUSTER NAME" | Get-VMHost | Get-VirtualSwitch -Name "vSwitch0" | New-VirtualPortGroup -Name "VM NETWORK NAME" -VLanId VLANID

Establecer el tipo del adaptador de red virtual a una VM

Get-VM "VM NAME" | Get-NetworkAdapter | Set-NetworkAdapter -Type EnhancedVmxne

 

¬ŅTienes preguntas?

Nos encanta una buena consulta. Cuéntanos cómo podemos ayudarte en tu proyecto