use strict; use warnings; use Win32::AdminMisc; my $machine = shift @ARGV or die "Usage: $0 ServerName\n"; #$machine = Win32::NodeName() unless($machine = shift @ARGV); $machine = "\\\\$machine"; $machine =~ s/^\\{2}/\\\\/; print "Machine Name: $machine\n"; print "Please enter the username to connect as:\n"; chomp (my $usr = ); print "Please enter your Password:\n"; chomp (my $pwd = ); my $LogonUser = Win32::AdminMisc::GetLogonName(); print "Logon User: $LogonUser\n"; if (Win32::AdminMisc::UserCheckPassword($machine, $usr, $pwd)) { print "$pwd is correct password for $usr on $machine\n"; } else { print "Bad Username or Password\n"; } print "==============================================================\n\n"; if (Win32::AdminMisc::LogonAsUser("$machine", "$usr", "$pwd", LOGON32_LOGON_BATCH)){ print "Successfully logged on.\n"; } else { print "Failed to logon.\n\tError: ", Error(), "\n"; }