# Kod zmienia nazw konta komputera w bazie usugi Active Directory, a take
# w systemie nazw samego komputera.

# ------ KONFIGURACJA SKRYPTU ------
my $strComputer     = "<NazwaKomputera>";       # np. jan-xp
my $strNewComputer  = "<NowaNazwaKomputera>";    # np. jan-pc
my $strDomainUser   = "<GwnaNazwaUytkownikaDomeny>";      # np. administrator@rallencorp.com
my $strDomainPasswd = "<HasoUytkownikaDomeny>";
my $strLocalUser    = "<AdministratorKomputera>";  # np. jan-xp\admini$strator
my $strLocalPasswd  = "<HasoAdministratoraKomputera>";
# ------ KONIEC KONFIGURACJI ---------
use Win32::OLE;
$Win32::OLE::Warn = 3;
############################
# Poczenie z komputerem
############################
my $objWMILocator = Win32::OLE->CreateObject("WbemScripting.SWbemLocator");
$objWMILocator->Security_->{AuthenticationLevel} = 6;
my $objWMIComputer = $objWMILocator->ConnectServer($strComputer, 
                                                 "root\\cimv2",
                                                  $strLocalUser,
                                                  $strLocalPasswd);
my $objWMIComputerSystem = $objWMIComputer->Get("Win32_ComputerSystem->Name='$strComputer'");
############################
# Zmiana nazwy komputera
############################
my $rc = $objWMIComputerSystem->Rename($strNewComputer,
                                 $strDomainPasswd,
                                 $strDomainUser);
if ($rc != 0) {
    print "Podczas zmiany nazwy komputera wystpi bd: $rc\n";
}
else {
    print "Z powodzeniem nazw komputera $strComputer zmieniono na $strNewComputer\n";
}

print "Ponowne uruchamianie...\n";
my $objWSHShell = Win32::OLE->CreateObject("WScript.Shell");
$objWSHShell->Run("shutdown /r");
