'========================================================================== 'NAME : mom_MPBackup.vbs 'AUTHOR : Marcus C. Oh 'DATE : 9/12/2006 'COMMENT : Retrieves a list of all MPs and backs them up to a specified ' : folder. '========================================================================== ' Retrieve arguments Set oArguments = WScript.Arguments If oArguments.Count <> 3 Then ListHelp WScript.Quit End If sMOMDBServer = oArguments(0) sMgmtServer1 = oArguments(1) sMgmtServer2 = oArguments(2) DBRetrieve(aManagementPacks) For i = 0 To UBound(aManagementPacks,2) WScript.Echo "Exporting Management Pack: " & "[" & aManagementPacks(0,i) & "] ..." ExportMP(aManagementPacks(0,i)) Next 'Functions and Subroutines -------------------------------------------------------- Sub ExportMP(MPName) Set oFS = CreateObject("Scripting.FileSystemObject") Set oShell = WScript.CreateObject("WScript.Shell") myDate = Year(Date()) & "-" & Month(Date()) & "-" & Day(Date()) sFolderDate = "\\" & sMgmtServer1 & "\MPBackup$\" & myDate sFolderDate2 = "\\" & sMgmtServer2 & "\MPBackup$\" & myDate If Not oFS.FolderExists(sFolderDate) Then oFS.CreateFolder(sFolderDate) End If If Not oFS.FolderExists(sFolderDate2) Then oFS.CreateFolder(sFolderDate2) End If On Error Resume Next If oFS.FolderExists(sFolderDate) Then Call oShell.Run("ManagementModuleUtil.exe -O " & sMgmtServer1 & " " & Chr(34) & MPName & Chr(34) & " " & Chr(34) & sFolderDate & "\" & MPName & ".akm" & Chr(34) & " -W",0,True) oFS.CopyFile sFolderDate & "\" & MPName & ".akm", sFolderDate2 & "\" & MPName & ".akm" Else WScript.Echo "Share does not exist. Cannot move files." End If On Error GoTo 0 End Sub Function DBRetrieve(aArray) ' Connect to the MOM production database and retrieve correct record Set Set oConnection = CreateObject("ADODB.Connection") Set oRecordSet = CreateObject("ADODB.Recordset") oConnection.ConnectionString = _ "Driver={SQL Server};" &_ "Server=" & sMOMDBServer & ";" &_ "Database=Onepoint;" &_ "Trusted_Connection=yes;" oConnection.Open strQuery = "SELECT Name FROM ProcessRule WHERE IsRuleGroup=1 and idProcessRule " &_ "NOT IN (SELECT idProcessRuleMember FROM ProcessRuleMembership) " &_ "ORDER BY Name" oRecordSet.Open strQuery, oConnection aManagementPacks = oRecordSet.GetRows oRecordSet.Close oConnection.Close End Function Sub ListHelp WScript.Echo VbCrLf & "MOM Management Pack Backup Script" & VbCrLf &_ "---------------------------------------------------------------" & VbCrLf & VbCrLf & _ "[Usage ] mom_MPBackups.vbs " & VbCrLf &_ "[Example] mom_MPBackups.vbs dbserver\int1 mgmtserver1 mgmtserver2" & VbCrLf & _ " - Retrieves all management packs and writes to" & VbCrLf &_ " - the MPBackup$ share on each management server." & VbCrLf &_ " - If your database is a SQL instance, use the format" & VbCrLf &_ " - databaseserver\instance." & VbCrLf End Sub