检查邮箱数据库状态并生成报表脚本

此脚本是群里面的哥们共享的,本人特整理出来分享给有需要的同学。

注意:
1.使用前修改下里面的一些参数(原作者都贴心的标注了)
2.有必要的话修改下脚本的执行策略

效果截图:

计划任务截图:

脚本内容:

add-pssnapin microsoft.exchange* #加载EMS不然exchange命令无法识别

$Smtp="mail.demo.com"#需要修改的地方br/>$AdminEamil="[email protected],[email protected]"#需要修改的地方
$EmailSender="[email protected]"#需要修改的地方
$i=0
$Searcher = Get-MailboxDatabase | Get-MailboxDatabaseCopyStatus
$bordercolor = ‘#eee‘
$i = 0
foreach($Sear in $Searcher)
{
#$MailDB = Get-MailboxDatabase -Identity $Sear.Databasename
$sem = ‘无‘
$bgindex = ‘‘
$trbgcolor = ‘‘
$errmess = ‘‘
#判断库的复制和装入状态
if ($Sear.Status -eq ‘Healthy‘)
{$SStatus = ‘复制正常‘#状态,如已装载
$bordercolor = ‘#efefef‘
}
Elseif($Sear.Status -eq ‘Suspended‘)
{
$SStatus = ‘已搁置‘
$bordercolor = ‘#FFFFCC‘
}
Elseif($Sear.Status -eq ‘Failed‘)
{
$SStatus = ‘失败‘
$bordercolor = ‘#FF0000‘
}
Elseif($Sear.Status -eq ‘Mounted‘)
{
$SStatus = ‘已装载‘
$bordercolor = ‘#ffffff‘
}
Elseif($Sear.Status -eq ‘Dismounted‘)
{
$SStatus = ‘已卸载‘
$bordercolor = ‘#ffcc00‘
}
Elseif($Sear.Status -eq ‘ServiceDown‘)
{
$SStatus = ‘服务停止‘
$bordercolor = ‘#FF0000‘
}
else
{
$SStatus = $Sear.Status
}
#判断内容索引状态
if ($Sear.ContentIndexState -eq ‘Healthy‘)
{
$SConIndexState = ‘正常‘
}
elseif ($Sear.ContentIndexState -eq ‘Failed‘)
{
$SConIndexState = ‘失败‘
$bgindex = ‘#ff0000‘
}
else
{
$SConIndexState = $Sear.ContentIndexState
$bgindex = ‘#ff0000‘
}
#判断是否有错误
if ($Sear.ErrorMessage.length -gt 0)
{
$i = $i+1
$sem = ‘错误代码00‘+$i
$errmess = $Sear.ErrorMessage
$errmes += "<tr style=""font-size:12px; font-family:‘微软雅黑‘;$trbgcolor"" align=""center"">
<td height=""30"">$sem</td>
<td align=""left"">$errmess</td></tr>"
}
#判断是否为主库
if ($Sear.ActiveCopy -eq $true)
{
$sac = ‘是‘
}
else
{
$sac = ‘否‘
$trbgcolor = ‘background-color:#efefef‘
}
$mbs = $Sear.MailboxServer
$sdn = $Sear.DatabaseName
$scql = $Sear.CopyQueueLength
$srql = $Sear.ReplayQueueLength

    $seei = $Sear.ErrorEventId
    $OutDB += "<tr style=""font-size:12px; font-family:‘微软雅黑‘;$trbgcolor"" align=""center"">
<td height=""30"">$mbs</td>
<td>$sdn</td>
<td bgcolor=""$bordercolor"">??$SStatus??</td>
<td bgcolor=""$bgindex"">??$SConIndexState??</td>
<td>??$scql??</td>
<td>??$srql??</td>
<td>??$sac??</td>
<td bgcolor=""$bordercolor"">??$sem??</td>
<td>??$seei??</td>

</tr>"
}
$Output = "<font size=""1"" face=""Arial,sans-serif"">
<h3 align=""center"">Exchange 数据库运行状态报表</h3>
<h5 align=""center"">生成时间 $((Get-Date).ToString())</h5>
</font>
<table width=""100%"" bordercolor=""#FFFFFF"" border=""0"" cellspacing=""2"" cellpadding=""0"">
<tr style=""background-color:#090; color:#FFF; font-size:14px; font-family:‘微软雅黑‘;"" align=""center"">
<td height=""30"">服务器名称</td>
<td>数据库名称</td>
<td>状态</td>
<td>内容索引状态</td>
<td>复制队列长度</td>
<td>重播队列长度</td>
<td>是否为主动库</td>
<td>错误信息</td>
<td>错误事件ID</td>
</tr>
$OutDB
</table>
<br><br><h5 align=""center"">错误代码及错误信息</h5><br>
<table width=""100%"" bordercolor=""#FFFFFF"" border=""0"" cellspacing=""2"" cellpadding=""0"">
<tr style=""background-color:#f90; color:#FFF; font-size:14px; font-family:‘微软雅黑‘;"" align=""center"">
<td>错误代码</td>
<td>错误内容</td>
</tr>
$errmes
</table>
"

function sendmail($body)
{
$today = Get-Date
$SmtpClient = new-object system.net.mail.smtpClient
$mailmessage = New-Object system.net.mail.mailmessage

$SmtpClient.Host = $Smtp
$mailmessage.from = $EmailSender
$mailmessage.To.add($AdminEamil)
$mailmessage.Priority=[system.net.mail.MailPriority]::High
$mailmessage.Bcc.add("[email protected]") #需要修改处
$mailmessage.Subject = “[Report] Exchange 数据库运行状态报表”
$mailmessage.IsBodyHtml = $true
$mailmessage.Body += "`n" +  $body

$smtpclient.Send($mailmessage) 

}
sendmail $Output

检查邮箱数据库状态并生成报表脚本

原文地址:http://blog.51cto.com/seawind/2335919

时间: 2024-10-13 01:23:42

检查邮箱数据库状态并生成报表脚本的相关文章

检查linux网络状态的两个脚本

一.通过定时收发email检测网络连通性 #/bin/bash echo "Daily test mail" > state.txt mail -s Server_State [email protected] < state.txt rm -df ./state.txt ~                         crontab -e增加如下任务10 07 * * * /root/checkNKmail &分时日月周 二.定时检测网络状态通过email发送

12c 检查pdb数据库状态

日常工作需要记住这两个视图,检查pdb状态 <roidb01:cdb:/home/oracle>$sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Sat Jan 20 17:52:42 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Rele

检查数据库状态

检查数据库的状态可以用三种方法: 1.使用目录文件查看属性 2. SELECT DATABASEPROPERTYEX('PAY','Status') --PAY是所要检查的数据库名称 查询结果: ONLINE = 数据库可以查询OFFLINE = 数据库显式脱机RESTORING =数据库正在恢复RECOVERING = 数据库正在恢复,还不能查询SUSPECT = 数据库不能恢复 3.直接查看所有系统的数据库状态 sp_helpdb

FineUI之使用SQL脚本从数据库表中生成相应的输入控件

在WEB开发时,经常需要依据数据库表中的字段建立相应的输入控件,来获取输入的数据.每次都需要按字段来敲,显然太低效,而且容易出错.这里提供一个SQL脚本生成相应输入控件的方法. USE DBDemo DECLARE @TEMP_TABLE_NAME NVARCHAR(512) DECLARE @WIDTH NVARCHAR(50) SET @TEMP_TABLE_NAME='Stuff' SET @WIDTH='200' SELECT '<f:'+TOKEN+' runat="server

检查HP服务器硬盘状态脚本

检查HP服务器硬盘状态脚本(如有问题则发邮件通知): # vi disk.sh 按a或i进入编辑模式 #!/bin/bash Name=`hostname` Date=`date +%m%d%y` Num=`dmidecode | grep -i 'serial number' | head -n 1` Disk=`hpacucli ctrl all show config | grep physicaldrive | awk -F[:" "]+ '{print $15}'` #ech

Oracle工具类-生成数据库现有Job的创建脚本

生成Oracle数据库现有Job的创建脚本 -- 生成现有Job的创建脚本 create or replace procedure proc_generate_job_create_sql is begin DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制 sys.dbms_output.put_line('declare'); sys.dbms_output.put_line(' v_job number;'); sys.dbm

检查用户头像状态的脚本

<?php $_SERVER['HTTP_HOST'] = ''; $fromUid = isset($GLOBALS['argv'][3]) && (intval($GLOBALS['argv'][3]) == $GLOBALS['argv'][3]) ? $GLOBALS['argv'][3] : 0; $limitNum = isset($GLOBALS['argv'][4]) && (intval($GLOBALS['argv'][4]) == $GLOBAL

数据库的运维策略脚本篇(内附脚本,无私分享)

数据库运维中盛传一个小段子,我误删除了数据库,改怎么办?有备份还原备份,没有备份就准备简历!听起来有趣但发生在谁身上,谁都笑不起来.接触了很多的客户发现90%客户的运维策略都不是很完善.本篇就分享一些常规的运维脚本,本篇没有涉及到的或不足的也请大家留言无私贡献深藏多年的脚本,谢谢! 邮件 邮件主要用来监控作业是否运行成功,如果您已经配置了类似zabbix等软件请忽略. 配置邮件服务 --SQL Server 并没有内置邮件服务器(Mail Server),它跟我们发送邮件一样,需要用户名和密码通

Exchange Server 运维管理02:邮箱数据库存储原理

重申一下,出此系列文章的目的是为了加强运维管理的能力,也就是说不是部署或者是常规配置,这就需要掌握一些基本的理论知识.如果有朋友需要了解Exchange的部署或者是基本操作,可以参考其他的资源,也可以看我之前的Exchange系列文章. 本文将了解一下Exchage 2010数据库文件的存储原理,可能Exchange部署配置完成后,客户很少去关心底层数据库文件的存储格式,只要DAG副本能正常复制,用户邮箱正常使用就可以了,当然,这是理想状态,但万一数据库发生故障需要对数据库进行修复或者是还原时候