前言:
Exchange会议室邮箱在企业内很常见,通常作为资源管理的一种方式,实现企业内会议室的预定与分配。有时候我们需要了解会议室的预定情况酒店会议室预订,进而实现资源的合理分配,避免出现部分会议室资源紧缺,部分会议室无人预定的情况。
小编编写了一个powershell脚本,生成html的格式,需要的同学可以参考下,统计脚本如下:
$end=Get-Date
$start=(Get-Date).AddDays(-30)
$Outputfile = ".\会议室预定情况统计.html"
#会议室邮箱预定情况统计
"
会议室预定情况统计
统计时间:$end
会议室预定情况
会议室
预定数量
" | Out-File $Outputfile -Append -Encoding UTF8
Write-Host "加载Exchange模块..." -ForegroundColor Green
Add-PSSnapin Microsoft.Exchange.Management.Powershell.*
$RoomMailbox=Get-Mailbox |Where-Object {$_.RecipientTypeDetails -eq "RoomMailbox"}
$TrackingLog=$RoomMailbox |ForEach-Object {Get-ExchangeServer | where {$_.IsHubTransportServer -eq "true"} | sort-object Name | Get-MessageTrackingLog -Start $start -End $end -Recipients $_.PrimarySmtpAddress}
$Room=$TrackingLog |Where-Object {$_.Source -eq "ROUTING"} |select @{n='Recipients';e={$_.Recipients-join '; '}}|group recipients | Select-Object name,count
$Room| ForEach-Object {
$name=$_.name
$Mailbox=get-mailbox $name
$displayname=$Mailbox.Displayname
$Count=$_.count
"

$Displayname
$count
" | Out-File $outputfile -Append -Encoding UTF8
}
Invoke-Item -Path $Outputfile
脚本运行完成后,结果如下:

脚本运行结果
最后需要说明几点:
1、脚本效率:效率不高,用了很多管道,可以进一步优化;
2、信息提取:可以抓取有哪些人在什么时间预定了哪些会议室,具体有兴趣的同学可以研究下;
3、需要以管理员方式运行脚本酒店会议室预订,才能正常获取结果;
4、对于Exchange2013/2016,需要调整命令的方式,因为已经没有hub这个角色;
5、可以将脚本封装为exe程序,方便日常使用。