积极答复者
Exchange 队列数据库重建脚本咨询

问题
-
HI 工程师您好,
能否看下脚本中是否有问题,目前运行以下脚本得不到任何结果。
要求:
1、删除队列数据库前需要检查队列数据库中是否是空;
2、为空时停止传输服务、删除队列数据库文件、启动传输服务;
3、非空时不运行任何命令;
$msg=Get-Queue
if ($msg -eq "$null"){
stop-service -name "MSExchangeTransport"
sleep 30
Remove-Item -path "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue\mail.que"
start-service -name "MSExchangeTransport"
}
答案
-
您好,
看到问题已经被您删除,是否是已经解决?这面给您总结一下:
通过以下测试,我们可以查看,即使队列为空的时候,Get-Queue的返回值也不是空的,所以您的脚本中If语句的内容并不会被执行:
所以,我们需要使用其它的值来判断,比如MessageCount:
$queues = Get-Queue $count = 0 foreach($queue in $queues){ $count += $queue.MessageCount } if ($count -eq 0){ write-host "ok to go" } else{ write-host "`nThere have "$count" message in queue`n" }
这样才可以执行if语句中的操作。
如果队列中有邮件时候:
同时,清空队列只是为了减少邮件丢失。您可以不清除队列直接重建队列数据库。
如果需要这面可以帮您重新删除该帖子
此致,
Kyle Xu
如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.
- 已编辑 Kyle.XuMicrosoft contingent staff, Moderator 2020年9月3日 8:01
- 已建议为答案 Kyle.XuMicrosoft contingent staff, Moderator 2020年9月4日 7:43
- 已标记为答案 深入过-小超 2020年9月9日 5:44
全部回复
-
您好,
看到问题已经被您删除,是否是已经解决?这面给您总结一下:
通过以下测试,我们可以查看,即使队列为空的时候,Get-Queue的返回值也不是空的,所以您的脚本中If语句的内容并不会被执行:
所以,我们需要使用其它的值来判断,比如MessageCount:
$queues = Get-Queue $count = 0 foreach($queue in $queues){ $count += $queue.MessageCount } if ($count -eq 0){ write-host "ok to go" } else{ write-host "`nThere have "$count" message in queue`n" }
这样才可以执行if语句中的操作。
如果队列中有邮件时候:
同时,清空队列只是为了减少邮件丢失。您可以不清除队列直接重建队列数据库。
如果需要这面可以帮您重新删除该帖子
此致,
Kyle Xu
如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.
- 已编辑 Kyle.XuMicrosoft contingent staff, Moderator 2020年9月3日 8:01
- 已建议为答案 Kyle.XuMicrosoft contingent staff, Moderator 2020年9月4日 7:43
- 已标记为答案 深入过-小超 2020年9月9日 5:44
-
您好,
请问以上建议是否有效?
如果以上建议有用的话,请在空闲的时候标记它为答案以帮助更多的用户。
此致,
Kyle Xu
如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.
-
您好,
多谢回复。
目前我是使用get-message解决此问题的。
$msg=Get-message
if ($msg -eq "$null"){
stop-service -name "MSExchangeTransport"
sleep 30
Remove-Item -path "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue\mail.que"
start-service -name "MSExchangeTransport"
}- 已建议为答案 Kyle.XuMicrosoft contingent staff, Moderator 2020年9月9日 5:51
-
您好,
多谢回复。
目前我是使用get-message解决此问题的。
$msg=Get-message
if ($msg -eq "$null"){
stop-service -name "MSExchangeTransport"
sleep 30
Remove-Item -path "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue\mail.que"
start-service -name "MSExchangeTransport"
}确实这也是一种很好的方案。谢谢分享。
此致,
Kyle Xu
如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.