http://qs321.pair.com?node_id=145525
Category: Win32 web stuff
Author/Contact Info J. J. Horner jhorner@2jnetworks.com
Description: For those of us who have to administer IIS installations, we find it backward that the mmc (THE IIS ADMIN TOOL!) can't set the DefaultLogonDomain property of the MSFTPSVC. Instead of using some loopy VB way to do it, I wrote a simple utility and use it now. Easy, straightforward and a small example of ADSI code.
#!/usr/bin/perl
#
# Filename:    Setftplogondomain.pl
# Author:      J. J. Horner (jh8@y12.doe.gov)
# Date:        2/14/2002
# Purpose:     Sets DefaultLogonDomain property of MSFTPSVC
#              on $machine.
# Usage:       $0 <machine_name> <new defaultlogondomain>
# License:     GPL
#          (http://www.gnu.org/licenses/licenses.html#GPL)
#
use warnings;
use strict;
use diagnostics;
use Win32::OLE;

my $DEBUG = 0;                          # In case I need to write some
+ DEBUG messages
$^W = 1;
Win32::OLE->Option(Warn => 1);          # Nice, informative error mess
+ages, but don't die.

my $usage = "\n\n $0 <machine_name> <new value>\n\n";
die $usage unless (@ARGV == 2);
my $server = shift;
my $newlogondomain = shift;

eval {
     ### GetObject and get current value.  For main FTP server IIS://$
+server/MSFTPSVC is needed
     my $ftpobj = Win32::OLE->GetObject("IIS://$server/MSFTPSVC") or d
+ie "Couldn't get object: $!\n";
     my $oldlogondomain = $ftpobj->{DefaultLogonDomain};
     
     ### Since Domains are not case sensitive, use case-insensitive re
+gexp
     if ($oldlogondomain =~ /^$newlogondomain$/i) {
          ### Already functionally the same, all done!
          print "No change needed.  Current DefaultLogonDomain setting
+ correct.\n";
     } else {
          ### Set, commit, and report...
          $ftpobj->{DefaultLogonDomain} = $newlogondomain;
          $ftpobj->SetInfo();
          print "DefaultLogonDomain changed from $oldlogondomain to $n
+ewlogondomain.\n";
     }
};
### Report any errors...
print Win32::OLE->LastError()."\n" if (Win32::OLE->LastError());