PingInfoView

Buenas tardes!

Os presento una herramienta que particularmente le saco un rendimiento enorme la mayoría de días en mi trabajo. Se llama PingInfoView y es una herramienta de monitorización de red que nos ayudará a controlar las perdidas de paquetes y fallos en las comunicaciones en toda nuestra red hacia el server que monitorices.

 

ping2

Tan solo se tiene que abrir y meter los host o servidores que tengamos que controlar y personalizar el numero de paquetes, los segundos entre paquetes o el tiempo de time out.

Es muy útil para una migración de granjas muy grandes de servidores y para tener un informe de cuando deja de contestar una máquina y durante cuanto tiempo.

Os la podéis descargar de:

http://www.nirsoft.net/utils/multiple_ping_tool.html

Espero que os sea de utilidad, si la descargáis y probáis dejarme un comentario con vuestras impresiones. Un saludo.

Cambiar nombre datastores – PowerCli

Buenas días,

Os traigo un pequeño automatismo para el cambio de nombre de los DTS locales y su movimiento a la carpeta LOCALES, que en mi trabajo me obligan a mover.

Simplemente, coge todos los discos con el nombre “datastore” y le modifica el nombre identificando el host y lo mueve a una carpeta para que esteticamente esté mejor.

Necesitamos un .csv llamado host.csv con el nombre de los host:

host

y este es el script:

cls
$ListEsxi = Import-CSV -Delimiter "," ./hosts.csv

foreach ($ESX in $ListEsxi)

Write-host "" 
 Write-host "Modificamos nombre DTS (FUNCIONA SI EL DTS LOCAL TIENE LA PALABRA datastore)" -foregroundcolor green
 Write-Host "###########################################"
 Write-host ""

{

# Modificamos nombre dts
 
 $vmhost = $ESX.name
 $ONLYname = $vmhost.Substring(0,13)
 $DTSname = "$ONLYname"+"_LOCAL"
 
 Write-Host Cambiando nombre del DTS local al host $ONLYname -foregroundcolor yellow
 
 $DTSold = Get-VMHost $vmhost | get-datastore | Where-Object {$_.Name -like "*datastore*"} | select | % {$_.name} 
 Get-Datastore $DTSold | Set-Datastore -NAME $DTSname | Out-Null
 Get-Datastore $DTSname | Move-Datastore -Destination LOCALES | Out-Null
 }

 

Que tengáis un feliz lunes!

Copia de ficheros a varias máquinas – CMD

Hola buenas noches!
Os subo un nuevo script para copiar ficheros a máquinas remotamente. Es bastante sencillo pero muy útil para algún despliegue de software que tengamos que hacer de manera precipitada.
Crear un fichero en la misma ruta con el nombre Hosts.txt con todos los servidores en una columna:
server1.com
server2.com
server3.com
server4.com
Y luego generar un .bat (con el nombre que queráis) con el siguiente código:
@echo off

::COGEMOS LA MAQUINA DEL LISTADO 

    for /F %%x in (Host.txt) do (echo %%x 

:: MAPEAMOS LA UNIDAD EN NUESTRO PC 

        NET USE O: \\%%x\D$\* /USER:localhost\administrator password>null 

        NET USE O: \\%%x\D$\* /USER:localhost\administrator password>null 

:: COPIAMOS TODOS LOS PARCHES Y EL EJECUTABLE 

        xcopy C:\RUTA_A_COPIAR\*  O: /E 

:: DEMAPEAMOS UNIDAD DE NUESTRO PC 

        net use O: /delete>null 

    )

 

Espero que os sirva de ayuda!!!

 

Instalación parches en Windows – PowerShell

Buenas noches!

Ya está aquí el primer post con script para PowerShell, al lío…

 

Sirve para instalar parches Windows, muchas veces nos toca instalar de marea rápida parches de seguridad que al administrador de SCCM se le pasó hacerlo y claro… con prisa. Os dejo el script con posibilidad de instalar .MSU y .EXE

 

Tanto el script como los parches tienen que estar en la misma ruta para que funcione tal y como lo tengo yo realizado.

 

# Instalación de apliaciones (.EXE)
write-host (" ")

write-host ("Instalando Microsoft SilverLight ...")
Start-Process Silverlight_x64.exe -ArgumentList /q -Wait
write-host (" ")

write-host ("Instalando Microsoft Visual C++ 2005 x86/x64 ...")
Start-Process vcredist_x86_2005.exe -ArgumentList /q -Wait
Start-Process vcredist_x64_2005.exe -ArgumentList /q -Wait
write-host (" ")

write-host ("Instalando Microsoft .NET Framework 4 ...")
Start-Process dotNetFx40_Client_x86_x64 -ArgumentList "/q /norestart" -Wait
write-host (" ")

# Instalación de aplicaciones de parches (.MSU)

write-host ("Instalando parches de seguridad de Microsoft ...")
$FileCAB = Get-ChildItem -Path $HotFixesPath | Where-Object {$_.Name -like "*.msu"} | select name
ForEach ($File in $FileCAB)
{
 $Argument = $File.Name + " /quiet /norestart"
 write-host ("Instalando el parche: " + $File.Name) -foreground green
 Start-Process wusa.exe -ArgumentList $Argument -Wait
}

write-host (" ")

# Instalación de aplicaciones de parches (.EXE)

$FileEXE = Get-ChildItem -Path $EXEPath | Where-Object {$_.Name -like "*.exe"} | select name
ForEach ($File in $FileEXE)
{
 $Argument = " /q /norestart"
 write-host ("Instalando el parche: " + $File.Name) -foreground green
 Start-Process $File.Name -ArgumentList $Argument -Wait
}

write-host (" ")
write-host ("En 5 minutos se reiniciará el equipo.")

Start-Process shutdown.exe -ArgumentList "/r /t 300"

 

Espero que os sirva de ayuda!!!

 

Migración VM automatizada – PowerCli

Buenas tardes!

Os subo el script que utilizo para la migración de máquinas virtuales entre datastores usando “storage vmotion”

Necesitamos un .csv en la misma ruta del script llamado moveVMconfig.csv con las siguientes columnas llamadas:

name: nombre de máquina –datastore: nombre de datastore destino.

name datastore

#############esto es lo que tenemos que guardar en un .ps1 (el nombre… el que queráis)

cls
Write-host " ##########################"
Write-host " ## Migracion datastores ##"
Write-host " ##########################"


#Declaracion de variables
$vmlist = Import-CSV -Delimiter ";" moveVMconfig.csv
$count = $vmlist.name.count
$counter = 1
Write-host 
Write-host $count maquinas a migrar.
Write-host

foreach ($item in $vmlist)
 {
 
 $vmName = $item.name
 $tgtConfigDS = $item.datastore
 
 
 $vm = Get-VM -Name $vmName
 $hds = Get-HardDisk -VM $vm
 $numVM = $counter++
 
 
$spec = New-Object VMware.Vim.VirtualMachineRelocateSpec 
$spec.datastore = (Get-Datastore -Name $tgtConfigDS).Extensiondata.MoRef
$hds | %{
 $disk = New-Object VMware.Vim.VirtualMachineRelocateSpecDiskLocator
 $disk.diskId = $_.Extensiondata.Key
 $disk.datastore = $_.Extensiondata.Backing.Datastore
 $spec.disk += $disk
}
 
 $vm.Extensiondata.RelocateVM_Task($spec, "defaultPriority") | Out-Null
 
 Write-host " Migrando maquina $vmName ($numVM de $count)"
 $vm | Move-VM -Datastore $tgtConfigDS -RunAsync | Out-Null # Parte nueva
 
 }
 Write-host
 Write-host Si quieres ver el progreso de la migrcion, lanza el siguiente comando:
 Write-host " "-> "Get-Task -status running | get-view | % {"$"_.info} | select EntityName,State,Progress,DescriptionId" -foregroundcolor yellow
 Write-host Fin.

 

Es una forma fácil de migrar máquinas de forma masiva, da lo mismo las que pongas a migrar se quedarán encoladas.

Ampliar disco virtual – PowerCli

Hola! Empezamos la semana con un script para ampliar discos en el vcenter (si quereis que os pase para extender el volumen el SO decirmelo y lo subo)

Necesitamos un .txt en la misma ruta del .ps1 con el nombre… vmWindows.txt .  Solo neceistamos una columna que se llame:

vm

esto es lo que tenemos que guardar en un .ps1 (el nombre… el que queráis)

###############

CLS 
$vmlist = Import-CSV -Delimiter ";" vmWindows.txt
foreach ($item in $vmlist) 
 {
 
 $vm = $item.vm
 $RAM = get-vm $vm | select | % {$_.MemoryGb}
 $DISK = Get-HardDisk $vm | where {$_.Name -eq "hard disk 1"} | select | % {$_.CapacityGB}
 $disksize = $RAM + $DISK + 3
 
 write-host $vm
 write-host RAM: $RAM
 write-host DISK C: $DISK
 write-host Total sumando ram y disco actual +3: $disksize
 
 Get-HardDisk $vm | where {$_.Name -eq "hard disk 1"} | Set-HardDisk -CapacityGB $disksize -Confirm:$false
 
 
}

 

La ampliación se hace sumando el disco actual + ram + 3 (de margen, este se puede obviar) .

Es para un proyecto algo especial pero vosotros tan solo tendrias que sumar el disco actual + el tamaño ampliar. (Lo marco en rojo)

Recuperar SnapShot – PowerCli

Hi!

Seguimos con los snapshot, ahora para cuando nos pidan recuperar el ultimo snap tirado.

Necesitamos un .csv en la misma ruta del .ps1 con el nombre… ListVm.csv . Solo neceistamos una columna que se llame:

Name

esto es lo que tenemos que guardar en un .ps1 (el nombre… el que queráis)

###############

$ListVM = Import-CSV -Delimiter “,” .\listvm.csv

foreach($vms in $ListVM){

$vm = $vms.name

$snap = Get-Snapshot -VM $vm | Sort-Object -Property Created -Descending | Select -First 1
Set-VM -VM $vm -SnapShot $snap -Confirm:$false

}

 

Planificar SnapShot – PowerCli

Buenas!

Os traigo otro script bastante útil para la planificación de SnapShot en máquinas virtuales, un ejemplo… plafica en 20 vm´s un snap tal día a tal hora… pues desde que nos lo comunican se ejecuta el siguiente scritp y TRABAJO HECHO.

Necesitamos un .csv en la misma ruta del .ps1 con el nombre… ListVm.csv . Solo neceistamos una columna que se llame:

Name

esto es lo que tenemos que guardar en un .ps1 (el nombre… el que queráis)

###############

$ListVM = Import-CSV -Delimiter "," .\listvm.csv

foreach ($VMs in $ListVM)
 {

#$vmName = 'MyVM'
 $snapTime = Get-Date "09/06/17 22:30"
 $snapName = "Nombre del snap ",$VMs.name -join ''
 $snapDescription = 'Descripcion'
 $snapMemory = $false
 $snapQuiesce = $false
 #$emailAddr = 'lucd@lucd.info'

$vm = Get-VM -Name $VMs.name
 $si = get-view ServiceInstance
 $scheduledTaskManager = Get-View $si.Content.ScheduledTaskManager
 $spec = New-Object VMware.Vim.ScheduledTaskSpec
 $spec.Name = "Nombre del snap ",$VMs.name -join ''
 $spec.Description = "Descripcion"
 $spec.Enabled = $true
 #$spec.Notification = $emailAddr
 $spec.Scheduler = New-Object VMware.Vim.OnceTaskScheduler
 $spec.Scheduler.runat = $snapTime

$spec.Action = New-Object VMware.Vim.MethodAction
 $spec.Action.Name = "CreateSnapshot_Task"

@($snapName,$snapDescription,$snapMemory,$snapQuiesce) | %{
 $arg = New-Object VMware.Vim.MethodActionArgument
 $arg.Value = $_
 $spec.Action.Argument += $arg

}

$scheduledTaskManager.CreateObjectScheduledTask($vm.ExtensionData.MoRef, $spec)

}

También se puede hacer para una máquina quitando los # de $vmName

Modificación nombre vm – PowerCli

Hola!!

Os traigo el script que es muchas ocasiones nos ahorrará mucho tiempo y que podemos pasar de una tarea tediosa por algo más rápido y sencillo

Y sin más…

Como siempre, un .csv en la ruta del .ps1 con el siguiente nombre en los encabezados, yo llamo al fichero vmnames.csv

vm newname

Y esto es lo que tenemos que guardar en un .ps1 (el nombre… el que queráis)

 

CLS 

$vmlist = Import-CSV -Delimiter "," vmNames.csv

foreach ($item in $vmlist)     { 

$vm = $item.vm 

$NEWname = $item.newname 

write-host Cambiamos el nombre a $vm por $NEWname
Set-vm $vm -NAME $NEWname -Confirm:$false

 }