Script – Backup arquivos PST

‘ Script – Backup arquivos PST
‘#####================================================================================ 
‘## Titulo: Backup de Arquivos PST
‘## Rev: 1.0
‘## Autor: Kelsen Lima
‘## 
‘## 
‘##        
‘## Propósito: 
‘##        1. Esse script faz o backup dos arquivos de armazemando de mensagens do Outlook.
‘##                     
‘## Pré-Requisitos:
‘##        1. Usuario logado deve ter o Winrar Instalado.
‘##
‘##    Issues:
‘##        1. 
‘##        2.        
‘##        
‘##    Revisions: 
‘##        NEW: 2/15/2006 XXXXXX Created XXXXXX.XXX script. (Example)
‘##        MOD: 1/5/2006 XXXXXX Modified how the scripts write log files. (Example)
‘##        FIX: 3/3/2006 XXXXXX Fixed a bug when writting to the event log. (Example)
‘##
‘##    To Do Items: 
‘##        1. Fix loop so it doesn’t loop infinitely (Example)
‘##        2. 
‘##        3. 
‘##
‘## Lógica Básica: 
‘##        1. Checa a existencia do Winrar na maquina
‘##        2. Compacta os arquivos de extensão .pst
‘##        3. Copia o arquivo compacta para o compartilhamento no servidor
‘#####================================================================================ 
‘——————————————————————–
‘Áerea de declação de variáveis.
Dim Servers(7)
strComputer = "." ‘Variavel que armazena o nome do Computador local
strPstPathVista = "" ‘Variavel que armaze o caminho do PST no Windows Vista
strPstPath = "" ‘Variavel que armaze o caminho do PST em outras versões do Windows
strTempPath = "" ‘Variavel que armazena o caminho da pasta de arquivos temporarios do usuário.
strWinrarPath = "" ‘Variavel que armazena o caminho da pasta do Winrar.
strPathBackup = "\\nas\PST Backup" ‘Caminho padrão de backup dos PST’s na rede.
strUserProfile = "" ‘Caminho do profile local do usuario.
‘——————————————————————–
‘Área de Declaração de Objetos.
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set wshShell = Createobject("WScript.Shell") ‘Cria Objeto Shell
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
Set fso = CreateObject("scripting.filesystemobject")
‘——————————————————————–
Servers(0) = "nas"
Servers(1) = "Metallica"
Servers(2) = "PinkFloyd"
Servers(3) = "Rush"
Servers(4) = "AeroSmith"
Servers(5) = "eithinkfw"
Servers(6) = "Virtual"
For Each Server In Servers
If UCase(server) = wshNetwork.ComputerName then
WScript.Quit
End If
Next
strUserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%") 
For Each objOS in colOSes
strOsVersion = objOS.Version 
strOsCountryCode = objOS.CountryCode
Next
If CheckProcess("Outlook.exe") = 1 Then
Message = MsgBox("Outlook.exe está em uso e é necessário finaliza-lo para que se possa efetuar o Backup. Deseja fazer isso agora?",vbYesNo,"Backup de Pst")
If message = 6 Then
  FinallyProcess("Outlook.exe")
Else
WScript.Quit
End If
End If
strTempPath = CStr(fso.GetSpecialFolder(2)) ‘Pega o caminho da pasta temporário do usuario.
If strOsVersion = "6.0.6000" Then
strPstPathVista = strUserProfile + "\AppData\Local\Microsoft\Outlook" ‘Pega o caminho da pasta do Outlook do Usuario que loga no Windows Vista.
Else
If strOSCountryCode = "55" Then
strPstPath = strUserProfile + "\Configurações Locais\Dados de Aplicativos\Microsoft\Outlook"
Else
strPstPath = strUserProfile  + "\Local Settings\Application Data\Microsoft\Outlook"
End If
End if
Call Backup
Private Sub Backup()
strPathBackup = strPathBackup + "\" + wshNetwork.UserName
‘—Se a pasta do usuário não existir na rede é criada com a instrução abaixo.
If fso.FolderExists(strPathBackup) = False Then
fso.CreateFolder(strPathBackup)
End If
‘—Se o arquivo já existir na pasta de arquivos temporários do usuário, é deletado para evitar problemas na hora da compactação.
If fso.FileExists(strTempPath + "\TempBackupPst.rar") = True Then
fso.DeleteFile(strTempPath + "\TempBackupPst.rar")
End If
‘—Se o Windows em que o script está sendo executado for Vista, segue uma rotina diferenciada por o Vista ter um sistema de pastas diferenciados.
If strOsVersion = "6.0.6000" And fso.FolderExists(strPstPathVista)Then
strWinrarPath = "C:\Program Files\WinRAR"
‘——-Se a pasta do do Winrar existir da-se início ao processo de backup.
If fso.FolderExists(strWinrarPath) Then
CompactarPST()
Exit Sub
Else
MsgBox "O Backup do Pst não pode ser efetuado, pois o Winrar não está intalado!",vbOKOnly,"Backup de PST"
WScript.Quit
End If
Else
If strOSCountryCode = "55" Then
strWinrarPath = "C:\Arquivos de Programas\WinRAR"
If fso.FolderExists(strWinrarPath) Then
CompactarPST()
Exit Sub
Else
MsgBox "O Backup do Pst não pode ser efetuado, pois o Winrar não está intalado",vbOKOnly,"Backup de PST"
WScript.Quit
End If
Else
strWinrarPath = "C:\Program Files\WinRAR"
If fso.FolderExists(strWinrarPath) Then
CompactarPST()
Exit Sub
Else
MsgBox "O Backup do Pst não pode ser efetuado, pois o Winrar não está intalado",vbOKOnly,"Backup de PST"
WScript.Quit
End If
End If
End If
End Sub
Private Sub CompactarPST()
Question = MsgBox("Você deseja realizar o backup do Outlook agora?",vbSystemModal + vbYesNo + vbQuestion,"Backup Outlook")
If Question <> 6 Then
WScript.Quit
End If
If strOsVersion = "6.0.6000" Then
Set process = wshShell.Exec( """"+ strWinrarPath + "\winrar.exe" + """" +  " a " + strTempPath + "\TempBackupPst.rar " + strPstPathVista +"\*.pst")
numStatus = process.Status
While numStatus = 0
numStatus = process.Status
Wend
Else
Set process = wshShell.Exec( """"+ strWinrarPath + "\winrar.exe" + """" +  " a " +  strTempPath + "\TempBackupPst.rar " + """"+ strPstPath +"\*.pst" +"""")
numStatus = process.Status
While numStatus = 0
numStatus = process.Status
Wend
End If
If numStatus <> 0 Then
CopiarPst(strTempPath + "\TempBackupPst.rar")
End If
End Sub
Private Sub CopiarPst(strFilePath)
On Error Resume Next
fso.CopyFile strFilePath,strPathBackup + "\"
If Error = 0 Then
‘MsgBox "Arquivo copiado com Sucesso",vbOKOnly,"Cópia de Arquivo"
Else
MsgBox "A operação de cópia apresentou o seguinte erro: " + CStr(Err.Number),vbOKOnly,"Cópia de Arquivo"
End if
End Sub  
Private Function CheckProcess(Process)
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = ‘" + Process + "’")
If colProcesses.Count > 0 Then
CheckProcess = 1
Else
CheckProcess = 0
End If
End Function
Private function FinallyProcess(Process)
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = ‘" + Process + "’")
For Each objProcess in colProcesses
    FinallyProcess = objProcess.Terminate()
Next
End Function

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s