# Disables the guest account on every machine on a subnet use strict; use Win32::AdminMisc; use Win32::NetAdmin qw(LocalGroupGetMembers LocalGroupIsMember UsersExist); use Net::Ping; my (%Hash, @accounts,$p); my $subnet='117'; for(113..113){ chomp; my $ip="10.1.$subnet.$_"; $p = Net::Ping->new("icmp"); if ($p->ping("$ip")){ my $Domain="\\\\$ip"; my $User='Guest'; if (UsersExist($Domain, $User)){ Win32::AdminMisc::UserGetMiscAttributes( $Domain, $User, \%Hash ); my $Disable=$Hash{USER_FLAGS}&UF_ACCOUNTDISABLE; if ($Disable==2){ print "$ip: $User Disabled\t"; } elsif ($Disable==0){ $Hash{USER_FLAGS} = $Hash{USER_FLAGS}|UF_ACCOUNTDISABLE; Win32::AdminMisc::UserSetMiscAttributes( $Domain, $User, USER_FLAGS, $Hash{USER_FLAGS} ); print "$ip: $User ENABLED\t"; } LocalGroupGetMembers($ip,"Administrators",\@accounts); if (@accounts&&LocalGroupIsMember($ip,"Administrators", "Guest")){ print "Guest in Admin Group"; } }else{ print "$ip: $User does not exist or Access Denied"; } }else{ print "$ip: not available"; } $p->close(); print "\n"; print OUT "\n" }