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-Webserverfor ($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-Dienstfor ($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-ServerWrite-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 Thunderbirdfor ($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-Mailtry { 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