我寫了一個power shell腳本,用於監視IIS應用程序池的狀態。使用當前的方法,每當任何泳池發生故障時,都會向我發出一個警報,告訴泳池已停止,然後再次啓動泳池併發送電子郵件,指出泳池已啓動。由於我有大約50臺服務器,所以郵件數量大量增加,有時會導致垃圾郵件。有人可以幫助我,讓腳本掃描池目錄並將結果放在文本/ html文件中,並向我發送郵件中這些池已關閉的列表。請在下面找到腳本: -App_Pool_Alert Powershell腳本
###################################Declear Servers in text file##############################################
$Servers = Get-Content C:\Users\Desktop\server.txt
################ Scans each server and import IIS web-administration module##################################
$Servers | ForEach-Object {
Invoke-Command -ComputerName $_ -ScriptBlock {
Import-Module WebAdministration
cd IIS:/AppPools
$CompName = (Get-WmiObject -Class Win32_ComputerSystem).Name
$ApplicationPools = dir
foreach ($item in $ApplicationPools)
{
$ApplicationPoolName = $item.Name
$ApplicationPoolStatus = Get-WebAppPoolState $ApplicationPoolName
If($ApplicationPoolStatus.value -eq "Stopped")
{
send-mailmessage -to "[email protected]" -from "[email protected]" -subject "Application Pool:- $ApplicationPoolName is Down on $CompName " -Body "$ApplicationPoolName is down. Please check IIS/Event logs for RCA." -SmtpServer ###########
Start-WebAppPool -Name $ApplicationPoolName
send-mailmessage -to "[email protected]" -from "[email protected]" -subject "Application Pool:- $ApplicationPoolName is Up on $CompName " -Body "$ApplicationPoolName is Up and running fine." -SmtpServer #############
}
}
}}
##################################### End of Script ##########################################################
爲什麼不直接在IF語句中寫入字符串數組,然後在最後如果它不是空的,在電子郵件正文中發送電子郵件? –