ListVM-SEK-WMM-02-Status.bat
IOF>>
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -PSConsoleFile D:\BACKUP\BIN\Consola.psc1 -command “. ‘D:\BACKUP\BIN\ListVM-SEK-WMM-02-Status.ps1′”
<<EOF
Consola.psc1
IOF>>
<?xml version=”1.0″ encoding=”utf-8″?>
<PSConsoleFile ConsoleSchemaVersion=”1.0″>
<PSVersion>1.0</PSVersion>
<PSSnapIns>
<PSSnapIn Name=”Microsoft.SystemCenter.VirtualMachineManager” />
</PSSnapIns>
</PSConsoleFile>
<<EOF
ListVM-SEK-WMM-02-Status.ps1
IOF>>
#Declaramos los parámetros que recibe el script
$VMMHost=”sek-wmm-02.grupo.sek”
$VMFileExport=”D:\BACKUP\BIN\ListVM-SEK-WMM-02-Status.csv”
# Comprobamos si están cargados los Cmdlets de Virtual Machine Manager.
# En caso contrario los cargamos.
If(!(Get-PSSnapin | `
Where-Object {$_.Name -eq “Microsoft.SystemCenter.VirtualMachineManager”`
}))
{
Add-PSSnapin -name Microsoft.SystemCenter.VirtualMachineManager
}
# Conectamos al servidor de SCVMM
$SCVMM = Get-VMMServer $VMMHost
# Recorremos todos los hosts de virtualización administrados por el servidor
# SCVMM
ForEach($HostSrv In (Get-VMHost |Sort-Object -Property HostCluster,Name))
{
# Mostramos por pantalla el nombre del host actual
$HostSrv.Name
“`tStatus`t`tVirtual Machine”
# Recorremos las máquinas virtuales que hospeda el host
ForEach($VM In (Get-VM -VMHost $HostSrv | Sort-Object -Property Name))
{
# Mostramos el nombre de la máquina virtual actual, con un tabulador
# para así ver que pertenece al host actual, su estado y la cadena
# de caracteres que guarda el estado
“`t” + $VM.Status + “`t” + $VM.Name
# Montamos la información de la máquina en la variable de salida
$Salida = $Salida + `
$HostSrv.Name + “;” + `
$VM.Name + “;” + `
$VM.Status + “” + “`r`n”
} # $VM
} # $HostSrv
# Montamos la salida agregando los encabezados de tabla.
$Salida = “Host;Virtual Machine;Estado`r`n” + $Salida
# Volcamos la salida al fichero
$Salida > $VMFileExport
<<EOF
StartVM-ALL.bat
IOF>>
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -PSConsoleFile D:\BACKUP\BIN\Consola.psc1 -command “. ‘D:\BACKUP\BIN\StartVM-ALL.ps1′”
<<EOF
Consola.psc1
IOF>>
<?xml version=”1.0″ encoding=”utf-8″?>
<PSConsoleFile ConsoleSchemaVersion=”1.0″>
<PSVersion>1.0</PSVersion>
<PSSnapIns>
<PSSnapIn Name=”Microsoft.SystemCenter.VirtualMachineManager” />
</PSSnapIns>
</PSConsoleFile>
<<EOF
StartVM-ALL.ps1
IOF>>
Get-VMMServer -ComputerName “sek-wmm-02.grupo.sek”
$VM = @(Get-VM)
foreach ($i in $VM)
{
Start-VM -VM $i
}
<<EOF
ShutdownVM-ALL.bat
IOF>>
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -PSConsoleFile D:\BACKUP\BIN\Consola.psc1 -command “. ‘D:\BACKUP\BIN\ShutdownVM-ALL.ps1′”
<<EOF
Consola.psc1
IOF>>
<?xml version=”1.0″ encoding=”utf-8″?>
<PSConsoleFile ConsoleSchemaVersion=”1.0″>
<PSVersion>1.0</PSVersion>
<PSSnapIns>
<PSSnapIn Name=”Microsoft.SystemCenter.VirtualMachineManager” />
</PSSnapIns>
</PSConsoleFile>
<<EOF
ShutdownVM-ALL.ps1
IOF>>
Get-VMMServer -ComputerName “sek-wmm-02.grupo.sek”
$VM = @(Get-VM)
foreach ($i in $VM)
{
Shutdown-VM -VM $i
}
<<EOF
IOF>>
# Filename: InstallVirtualGuestServices.ps1
# Description: Finds all virtual machines managed by Virtual Machine
# Manager on which virtual guest services are not
# installed and installs the appropriate service.
# Connect to the Virtual Machine Manager server.
$VMMServer = Get-VMMServer -ComputerName “sek-wmm-02.grupo.sek”
# Find all virtual machines without virtual guest services.
$VMs = @(Get-VM)
$VMsWithoutServices = @($VMs | where { $_.HasVMAdditions -eq $False })
if ($VMsWithoutServices.Count -eq “0″) { throw “All virtual machines have virtual guest services installed.” }
# Install virtual guest services on all the computers in the array.
foreach ($VM in $VMsWithoutServices)
{
Set-VM –VM $vm –InstallVirtualizationGuestServices $TRUE -RunAsynchronously
}
<<EOF
Not mine. Dont remember the author.
BackupVMMDatabase.bat
IOF>>
ECHO OFF
rem date?
FOR /F “TOKENS=2-4 DELIMS=/ ” %%A IN (‘DATE /T’) DO (SET date=%%B%%A%%C)
rem db? filename?
SET file=BackupVMMDatabase
SET filename=%file%_%date%.bak
del /Q D:\BACKUP\VMM_DATABASE\%filename%.rar
del /Q D:\BACKUP\TEMP\*.*
rmdir D:\BACKUP\TEMP
mkdir D:\BACKUP\TEMP
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -PSConsoleFile D:\BACKUP\BIN\Consola.psc1 -command “. ‘D:\BACKUP\BIN\BackupVMMDatabase.ps1′”
rar_64bits a -ao -ow -m4 -mt4 -rr -rv -v1G -vn -t D:\BACKUP\VMM_DATABASE\%filename%.rar D:\BACKUP\TEMP
del /Q D:\BACKUP\TEMP\*.*
rmdir D:\BACKUP\TEMP
<<EOF
Consola.psc1
IOF>>
<?xml version=”1.0″ encoding=”utf-8″?>
<PSConsoleFile ConsoleSchemaVersion=”1.0″>
<PSVersion>1.0</PSVersion>
<PSSnapIns>
<PSSnapIn Name=”Microsoft.SystemCenter.VirtualMachineManager” />
</PSSnapIns>
</PSConsoleFile>
<<EOF
BackupVMMDatabase.ps1
IOF>>
# Description: Backs up the VMM database.
# Specify the VMM server and domain.
$VMMServer = Get-VMMServer -ComputerName “sek-wmm-02.grupo.sek”
# Specify the backup folder path and name. To back
# up a database to a network share, specify the UNC
# path, for example, \\SQLServer01\VMMBackups.
Backup-VMMServer –Path “D:\BACKUP\TEMP” -VMMServer $VMMServer
<<EOF