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