//*************************************************// // Load_SQL_Reg.js // open the xml file var fname = "servers.xml"; var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); xmlDoc.async = false; xmlDoc.resolveExternals = false; xmlDoc.load(fname); if (xmlDoc.parseError.errorCode != 0) { var myErr = xmlDoc.parseError; WScript.Echo("You have error " + myErr.reason); } else { // process each alias var objNodeList = xmlDoc.getElementsByTagName("alias"); for (var i=0; i < objNodeList.length; i++) { var alias = objNodeList.item(i).getAttribute("name"); var data = objNodeList.item(i).getAttribute("data"); addAlias (alias, data); } var oApplication = new ActiveXObject("SQLDMO.Application"); var oServerGroups = oApplication.ServerGroups; var oRegisteredServers = oApplication.RegisteredServers; var objNodeList = xmlDoc.getElementsByTagName("reg"); for (var i=0; i < objNodeList.length; i++) { // Test the group var group = objNodeList.item(i).parentNode.getAttribute("name"); try { // does the group already exist? var oServerGroup = oServerGroups(group); } catch (e) { // add it WScript.Echo("Adding group: " + group); var oGroup = new ActiveXObject("SQLDMO.ServerGroup"); oGroup.Name = group; oServerGroups.Add(oGroup); } // Test the server server = objNodeList.item(i).getAttribute("server"); try { // Does the server already exist in this group? var oRegisteredServer = oServerGroups(group).RegisteredServers(server); // If so delete it! WScript.Echo ("Removing Server: " + server); oServerGroups(group).RegisteredServers.Remove(server); } catch (e) { // does not exist, do nothing } try { // NOTE: this will fail if server is already registered in a different group WScript.Echo ("Adding Server: " + server); var oNewServer = new ActiveXObject("SQLDMO.RegisteredServer"); oNewServer.Name = server; oNewServer.Login = objNodeList.item(i).getAttribute("login").replace(/^$/, " "); oNewServer.Password = objNodeList.item(i).getAttribute("password"); oNewServer.UseTrustedConnection = parseInt (objNodeList.item(i).getAttribute("trustedyn")); oServerGroups(group).RegisteredServers.Add(oNewServer); } catch (e) { // print error and continue WScript.Echo ("***Error**: " + e.description); } } } function addAlias(alias, data) { var regKey = "HKLM\\SOFTWARE\\Microsoft\\MSSQLServer\\Client\\ConnectTo\\" + alias ; // see if the key exists var WshShell = WScript.CreateObject ("WScript.Shell"); try { var found = WshShell.RegRead (regKey); } catch (e) { //do nothing } if (found != null) { // delete the key before re-add WshShell.RegDelete (regKey); } // add the key WScript.Echo ("Adding alias for : " + regKey); WshShell.RegWrite (regKey, data, "REG_SZ"); } //*************************************************//