run shell script to start apex automatic

 first run the code to enable shell scripts

first run shell with admin role and run this code



Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

type: A and ENTER


after that open editor and copy & paste the code and save as: auto_run_software.ps1

check the folder path, check the time for break and replace the email infos

$retryDelay_httpd_httpd = 5                    # Anzahl der Versuche, den Apache zu starten
$retryDelay_tnslsnr = 60                       # Verzögerung zwischen den Versuchen (in Sekunden)
$retryDelay_tomcat = 5                         # Anzahl der Versuche, den Tomcat zu starten
$retryDelay_thunderbird = 60                   # Anzahl der Versuche, Thunderbird zu starten
$retryDelay = 30                               # Standard-Verzögerung zwischen den Versuchen (in Sekunden)

# Initialisiere Variablen für Dienststatus
$apacheStarted = $false
$oracleListenerStarted = $false
$tomcatStarted = $false
$thunderbirdStarted = $false

###############################################################################################
# Überprüfe und starte den Apache-Webserver
for ($i = 1; $i -le $retryDelay_httpd_httpd; $i++) {
    $runningProcess = Get-Process | Where-Object { $_.ProcessName -like "*httpd*" }

    if ($runningProcess.Count -eq 0) {
        Write-Host "Der Apache-Webserver wird gestartet (Versuch $i von $retryDelay_httpd_httpd)..."
        Start-Process -FilePath "C:\xampp\apache\bin\httpd.exe"
    } else {
        Write-Host "Der Apache-Webserver läuft bereits."
        $apacheStarted = $true
        break
    }

    if ($i -lt $retryDelay_httpd_httpd) {
        Write-Host "Warte $retryDelay Sekunden vor dem nächsten Versuch..."
        Start-Sleep -Seconds $retryDelay
    }
}

###############################################################################################
# Überprüfe und starte den Oracle Listener-Dienst
for ($i = 1; $i -le $retryDelay_tnslsnr; $i++) {
    $runningProcess = Get-Process | Where-Object { $_.ProcessName -like "*tnslsnr*" }

    if ($runningProcess.Count -eq 0) {
        Write-Host "Der Oracle Listener-Dienst wird gestartet (Versuch $i von $retryDelay_tnslsnr)..."
        Start-Process -FilePath "C:\db\db_home\bin\tnslsnr.exe"
    } else {
        Write-Host "Der Oracle Listener-Dienst läuft bereits."
        $oracleListenerStarted = $true
        break
    }

    if ($i -lt $retryDelay_tnslsnr) {
        Write-Host "Warte $retryDelay_tnslsnr Sekunden vor dem nächsten Versuch..."
        Start-Sleep -Seconds $retryDelay_tnslsnr
    }
}

###############################################################################################
# Überprüfe und starte den Tomcat-Server
Write-Host "Bevor Tomcat läuft, wird hier ersmal 5 min Pause gemacht."
Start-Sleep -Seconds 300  # Fünf Minuten Pause
$processNameContains_tomcat = "java"
for ($i = 1; $i -le $retryDelay_tomcat; $i++) {
    $runningProcess = Get-Process | Where-Object { $_.ProcessName -like "*$processNameContains_tomcat*" }

    if ($runningProcess.Count -eq 0) {
        Write-Host "Der Tomcat wird gestartet (Versuch $i von $retryDelay_tomcat)..."

        $env:CATALINA_HOME = "C:\xampp\Tomcat"
        Start-Process -FilePath "C:\xampp\Tomcat\bin\startup.bat"

        if ($i -lt $retryDelay_tomcat) {
            Write-Host "Warte $retryDelay Sekunden vor dem nächsten Versuch..."
            Start-Sleep -Seconds $retryDelay
        }
    } else {
        Write-Host "Der Tomcat läuft bereits."
        $tomcatStarted = $true
        break
    }
}

###############################################################################################
# Überprüfe und starte Thunderbird
for ($i = 1; $i -le $retryDelay_thunderbird; $i++) {
    $thunderbirdProcess = Get-Process | Where-Object { $_.ProcessName -eq "thunderbird" }

    if ($thunderbirdProcess.Count -gt 0) {
        $thunderbirdStarted = $true
        Write-Host "Thunderbird läuft bereits."
        break
    } else {
        $thunderbirdPath = "C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
        if (Test-Path $thunderbirdPath) {
            try {
                Write-Host "Starte Thunderbird..."
                Start-Process -FilePath $thunderbirdPath
                $thunderbirdStarted = $true
                Write-Host "Thunderbird wurde erfolgreich gestartet."
                break
            } catch {
                Write-Host "Fehler beim Starten von Thunderbird: $($_.Exception.Message)"
            }
        } else {
            Write-Host "Thunderbird wurde nicht gefunden. Pfad überprüfen: $thunderbirdPath"
            Start-Sleep -Seconds $retryDelay
        }
    }

    if ($i -lt $retryDelay_thunderbird) {
        Write-Host "Warte $retryDelay Sekunden vor dem nächsten Versuch..."
        Start-Sleep -Seconds $retryDelay
    }
}

# Sende eine E-Mail mit den Ergebnissen
$smtpServer = "smtp.web.de"
$smtpPort = 587
$smtpUsername = "online_application_check@web.de"
$smtpPassword = "Password"
$senderEmail = "online_application_check@web.de"
$recipientEmail = "online_application_check@web.de"
$subject = "Dienstüberwachung und Startbericht"
$body = "Ergebnisse der Dienstüberwachung und des Starts:`r`n" +
        "Apache-Webserver: $apacheStarted`r`n" +
        "Oracle Listener-Dienst: $oracleListenerStarted`r`n" +
        "Tomcat-Server: $tomcatStarted`r`n" +
        "Thunderbird: $thunderbirdStarted"

# Konfiguriere die SMTP-Client-Einstellungen
$smtpClient = New-Object System.Net.Mail.SmtpClient
$smtpClient.Host = $smtpServer
$smtpClient.Port = $smtpPort
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($smtpUsername, $smtpPassword)

# Erstelle das E-Mail-Objekt
$mailMessage = New-Object System.Net.Mail.MailMessage
$mailMessage.From = $senderEmail
$mailMessage.To.Add($recipientEmail)
$mailMessage.Subject = $subject
$mailMessage.Body = $body

# Sende die E-Mail
try {
    Write-Host "Sende E-Mail mit Bericht..."
    $smtpClient.Send($mailMessage)
    Write-Host "E-Mail wurde erfolgreich gesendet."
} catch {
    Write-Host "Fehler beim Senden der E-Mail: $($_.Exception.Message)"
}



if it not works, then create also environment variable for that:

name: 

path: C:\Program Files\Java\jdk1.8.0_301


run the created powershell file and check, if it run succesfully, then create auto task job

task name: check & start software

trigger: when the computer starts

action: start programm

start a program: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

add arguments: -ExecutionPolicy Bypass -File "C:\Users\APEX\Documents\auto_run_software.ps1"

and Finish.

create also on the same task a new trigger to start like every hours



0 $type={blogger}:

Kommentar veröffentlichen