PoshCode Archive  Artifact [b01c95e297]

Artifact b01c95e297d9c22e2b36715ec91b02850e98157e2fed3a6ce230a1cdf4e668aa:

  • File Backup-full.ps1 — part of check-in [b0e283b47f] at 2018-06-10 13:32:45 on branch trunk — En exchange 2007, una vez balanceado el nodo. Es neceario realizar un backup full sobre cada SG. (user: Pedro Genil size: 3466)

# encoding: utf-8
# api: powershell
# title: Backup full
# description: En exchange 2007, una vez balanceado el nodo. Es neceario realizar un backup full sobre cada SG.
# version: 0.1
# type: class
# author: Pedro Genil
# license: CC0
# x-poshcode-id: 3908
# x-archived: 2013-01-22T15:50:25
# x-published: 2013-01-18T09:54:00
#
# Con este scritp, se mirarį las unidades de logs, y se listaran en modo descentento de tamańo.
# Realizando el backup primero de la unidad que tenga menos espacio, y asi sucesivamente
#
# AƱadimos el modulo de exchange
If ((Get-PSSnapin | where {$_.Name -match "Exchange.Management"}) -eq $null)
{
	Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
}
$lista= ""
[int]$tam=30
$server = "MAILBOX"
$discos=get-wmiobject -class win32_volume -filter "DriveType=3" -computer $server
$databases = Get-MailboxDatabase -Server $server -Status
foreach ($database in $databases)
{
        # Continuar solo si la bbdd no es de recovery 
         if (-not $database.Recovery) 
         { 
            # Continuar solo si la bbdd esta montada 
            if ($database.Mounted) 
            { 
               # Continuar solo si la bbdd no esta en modo backup 
               if (-not $database.BackupInProgress) 
               { 
                  # A partir de aqui, sacamos los tamaƱos de la unidad de log
                    #Sacamos la unidades en la que se encuentra el log
                    $logpath = (get-storagegroup $database.storagegroup).logfolderpath
                    foreach ($disco in $discos)
                        {
                            #Verficamos que el server tenga la unidad log
                             if ($disco.driveletter -eq $logpath.drivename)
                                {
                                    $tamlog= ($disco.freespace/1GB)
                                    #Comparamos el tamaƱo
                                        if ($tamlog -lt $tam)
                                                {
                                                    if ($lista.Length -gt 0) 
                     			                            { 
                        			                             $lista += "," 
                     			                            } 
                    			                    $lista += "`"" + $($database.StorageGroupname) + "`"" 
                                                    $tamlog = $tam
                                                 }

                                }   
                        }
                }
           }
         }
}
# Ejecutar el full 
$hoy = Get-Date 
$fecha = $hoy.ToString("yyyyMMdd") 
$log_full = "Full_" + $fecha + ".log" 
cd "Ruta ejecutable del tdpexcc"
. ".\tdpexcc.exe" "backup" $lista "full" >> $log_full
#Guardamos la lista de backups por dia
$fechac = Get-date
if ((Test-Path "F:\Logs_BCKP\full.txt") -ne $true)
{
New-Item -path "F:\Logs_BCKP" -name "full.txt" -type File
}
Write "------------------------------------------" >> "F:\Logs_BCKP\full.txt"
Write $fechac >> "F:\Logs_BCKP\full.txt"
Write "FULL" $lista_full >> "F:\Logs_BCKP\full.txt"
Write "------------------------------------------" >> "F:\Logs_BCKP\full.txt"
# Limpiar logs, conservar 60 dias
foreach ($oldfile in (Get-ChildItem Full_*.log))
{ 
   if ($oldfile.LastWriteTime -le $hoy.AddDays(-60)) 
   { 
      Remove-Item $oldfile 
   } 
}