It could be done in VBScript or Perl. Here's an old Perl script. I can't find old VBScript:
#Perl Script based on
#http://www.sqlservercentral.com/scripts/contributions/1467.asp
use strict;
use Getopt::Std;
use Win32::OLE;
use Win32::OLE::Const("Microsoft SQLDMO");
my (%args, $args, $serverfile, $groupname, $servername, $ServerGroup, $cnt);
my $err = 0;
my $SQLServer = new Win32::OLE 'SQLDMO.SQLServer';
my $Application = $SQLServer->{Application};
getopts('f:', \%args);
$serverfile = $args{f};
$cnt = 0;
open SERVERFILE, $serverfile or die "Cannot open file: $serverfile";
while (<SERVERFILE>)
{
print "Processing $_";
s/#.*//; # remove comments, ignore blank lines
if (!$_) {next;}
tr/\t / /s;
$cnt++;
($groupname, $servername) = split;
$ServerGroup = new Win32::OLE 'SQLDMO.ServerGroup';
$ServerGroup = CreateGroup($groupname);
RegisterServer($ServerGroup, $servername);
$ServerGroup = undef;
$servername = undef;
}
close SERVERFILE;
exit $err;
sub CreateGroup
{
my $ServerGroup = new Win32::OLE 'SQLDMO.ServerGroup';
$ServerGroup->{Name} = $groupname;
$Application->ServerGroups->Add($ServerGroup);
$ServerGroup = undef;
$ServerGroup = $Application->ServerGroups->Item($groupname);
return $ServerGroup;
}
sub RegisterServer
{
my $RegisteredServer = new Win32::OLE 'SQLDMO.RegisteredServer';
$RegisteredServer->{Name} = $servername;
$RegisteredServer->{UseTrustedConnection} = 1;
$RegisteredServer->{PersistFlags} = 1;
$ServerGroup->RegisteredServers->Add($RegisteredServer);
$RegisteredServer = undef;
}