• 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;

    }