リモート サーバー上のサービスをチェックし、サービスがダウンしている場合はメールを送信するために使用するスクリプトがあります。ただし、スクリプトの実行中にサーバーがダウンすると、スクリプトが長時間実行される可能性があります。プロセスをスピードアップする方法はありますか?完成までスクリプトを続けてほしいです。どんな助けでも大歓迎です。また、このスクリプトで改善できることが他にある場合は、powershell を初めて使用するのでお知らせください。ありがとう!
#****************** Function To Send E-Mail ******************#
function sendEmail {
send-mailmessage -to "recipient <admin@mail.com>" -from "sender <admin@mail.com>" `
-subject "$eSubject" `
-body "$eBody" -smtpServer mail.smtpServer.com
}
#****************** Set Variables ******************#
$erroractionpreference = "SilentlyContinue"
$date = Get-Date
$servicesPath = "C:\path_to_file\services.txt"
$serversPath = "C:\path_to_file\servers.txt"
$services = Get-Content $servicesPath
$servers = Get-Content $serversPath
#****************** Check Services And Send E-Mail ******************#
foreach ($service in $services) {
foreach ($server in $servers)
{
#Check If Service Exist On Server
$checkService = Get-Service -ComputerName $server -DisplayName $service
#If The Service Exists Evaluate Status
if($checkService)
{
if ($checkService.status -notlike "Running")
{
#Get Server Last Boot Up Time, Set E-Mail Subject And Body, And Send E-Mail
$OperatingSystem = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $server
$LastBootUp = $OperatingSystem.ConvertToDateTime($OperatingSystem.LastBootUpTime)
$eSubject = "$service DOWN on $server"
$eBody = "$date`r`n$service DOWN on $server`r`nLast bootup time for $server is: $LastBootUp"
sendEmail
}
}
}
}