Tim,
 
Here is a quick and dirty printer of this info.

Using Tie::Registry seems to be faster, but I have not modified this script
to use it yet.

use strict;

use Win32::NetAdmin;
use Win32::Registry;
use Win32::AdminMisc;
use Win32::NetResource;

my $Domain = "DOMAIN_NAME_HERE"; #Put Domain name here
my @BDCs;
my $Machine;


# Get List of System in this Domain
Win32::NetAdmin::GetServers( '',$Domain, SV_TYPE_ALL, \@BDCs );

foreach $Machine (@BDCs) {

    my $Root;
    my $Key;

    my %NetResource = (
        RemoteName => "\\\\".$Machine."\\c\$"
        );
    my $UserName = "domain_name_here\\administrator";
    my $Password = "password"; # Set your password here

    # Build Security Context
    if ( Win32::NetResource::AddConnection (\%NetResource,
$Password,$UserName, 0)) {

        if ( $HKEY_LOCAL_MACHINE->Connect ( $Machine, $Root )) {
 
            if( $Root->Open( "Software\\Microsoft\\Windows
NT\\CurrentVersion", $Key ) )
            {
                print $Machine." NT Installed\n";
                PrintSettings($Key);
                $Key->Close();
                print "===================================\n";
            } else {
                print $Machine." Version Check Failed\n";
                print "===================================\n";
            }
 
            $Root->Close();
        }

        Win32::NetResource::CancelConnection ("\\\\".$Machine."\\c\$",1,1);

    } else {
        my $error;
        my $message;

        Win32::NetResource::GetError($error);
        my $command = "NET HELPMSG $error";
        $message = `$command`;
        print $Machine."->".$error."-".$message."\n";
        print "===================================\n";
 
    }
}

sub PrintSettings
{
  my( $Key ) = @_;

  my $ValueName;
  my $DataType;
  my $Data;

  $ValueName = "CurrentVersion";
  if($Key->QueryValueEx($ValueName, $DataType, $Data )) {
      print "    ".$ValueName."=>".$Data."\n";
  }
  $ValueName = "CSDVersion";
  if($Key->QueryValueEx($ValueName, $DataType, $Data )) {
      print "    ".$ValueName."=>".$Data."\n";
  }
  $ValueName = "CurrentBuildNumber";
  if($Key->QueryValueEx($ValueName, $DataType, $Data )) {
      print "    ".$ValueName."=>".$Data."\n";
  }
 
}

-----Original Message-----
From: Mcguire, Timothy L (Tim), SOBUS [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, July 17, 2001 3:25 PM
To: '[EMAIL PROTECTED]'
Subject: SERVICE PACK SNIFFER


Does any one have a Service Pack sniffer that iterates through a text list
or enumerated domain.  You would have my deepest gratitude and my undying
loyalty.

Thanks

Tim
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/perl-win32-admin
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/perl-win32-admin

Reply via email to