foreach my $targetServer (@targets) {
# Ping host to check its available
my $p = Net::Ping->new();
if ($p->ping($targetServer)) {
$logger->info("Target [$targetServer] is alive, starting deployment ");
foreach my $deploySection (@deployments) {
if ($flagDeploy) {
$logger->info("Starting deployment for [$deploySection] on target [$targetServer] ");
my $deploySource = "$config{$deploySection}{'Source'}" ;
my $deployDest = "$config{$deploySection}{'Destination'}" ;
if ($flagNoMove) {
my $thread = threads->new(sub {deployRoutine($targetServer, $deploySource, $deployDest, "true")});
push (@Threads, $thread);
} else {
my $thread = threads->new(sub {deployRoutine($targetServer, $deploySource, $deployDest)});
push (@Threads, $thread);
}
}
}
} else {
$logger->warn("Couldn't ping target [$targetServer] host will be ignored ");
}
$p->close();
}
####
# Main subroutine, here's where we will deploy content
sub deployRoutine($$$;$) {
my ($remoteHost, $sourceDir, $destDir, $flagNoMove) = @_ ;
$flagNoMove="" unless ($flagNoMove);
my $cmd = "psexec \\\\$remoteHost /accepteula -u $user -p $pass -h -e -n 3 -f -c $copyScript $sourceDir \"$destDir\" $flagNoMove" ;
my $returnCode = `$cmd`;
return $returnCode ;
}
####
Process can't access file because it is used by another process
Connecting to MYSERVER...Starting PsExec service on MYSERVER...Connecting with PsExec service on MYSERVER...Copying C:\temp\deploy_files.cmd to MYSERVER...Error copying C:\temp\deploy_files.cmd to remote system:
Free to wrong pool 348d3a0 not 298de8 during global destruction.