由于不是太熟悉Powershell 脚本,用户的这个需求也很奇怪,他需要的是将您当前的通讯组中的成员达到80%的用户筛选出来,从听觉上,这得要一大段的Powershell 命令!
而我本人不是做开发,代码一多头就发晕,我得找个过程来实现。我仔细分析了下我需要的几个过程,其实把顺序理清楚了后发现问题处理貌似也没那么复杂:
第一步:从组中导出当前组内成员,如果这个组是分发组这个命令比较简单,我们直接使用Powershell 命令:
ps:>get-distributiongroupmember -identity tss(组名) |select samaccountname >c:tss.csv
截图如下:
第二步:由于CSV内容不太符合我们目前的对于格式的期望,而且里面会有比较多的空格,因此我们需要做两步骤:
1.删除空格,这个操作比较简单,我们使用notepad 的查找替换功能,将空格替换成 无即可实现这个过程:
2. 将-删除,同时将Samaccountname 缩短成一个比较简单的参数,我们这里将他变成identity.最终的结果如下:
第三步、将CSV文件编辑好之后,我们就可以获取邮箱的Quota,这个是我们的Mailbox 属性中的一个属性,我们这里截取了禁止发送的QUOTA和禁止发送和接收的Quota.结果如下:
Import-Csv c:tss.csv |ForEach-Object{Get-Mailbox -identity $_.identity |select name,prohibitsendquota,prohibitsendreceivequota} >c:Userquota.csv
第四步、获取当前的Mailbox 大小,这个也可以采用Powershell 命令来导出当前邮箱数据库的大小,Powershell 命令如下:
Import-Csv c:tss.csv |ForEach-Object{Get-Mailboxstatistics -identity $_.identity |select displayname,Itemcount,totalitemsize} >c:Usersize.csv
第五步,将两个CSV合并成一个Excel文件,也要经过几个步骤,首先我们将两个文件的空格都去除掉:
1.UserSize 的空格去除,操作比较简单,我们需要在查找替换空格:
2. Userquota的空格去除,去掉后结果如下:
有点可能要注意下,这边的Unlimited 不是真的意味着是无限制,因为默认来说他会继承数据库本身的限制,也就是说,我们必须要查看数据库本身的Quota.所以我们查看下数据库的本身Quota大小,这边是2335M,也就是差不多2G的大小了:
这里我们将UserQuota 的大小变更为2G,再将G去掉,最终结果如下:
现在在将两个Excel 合并,形成两个工作表,我们需要对数据进行分列操作:
点击分列后固定宽度:
对数据以用户名排序,因为两个数据的共享字段为用户名,依据我们最终的结果如下,当然里面还有很多公式了。这些公式的写法必须依照我们相关实际情况来写:
OK,整体我们还可实现条件格式来达到警醒用户谁的配额超过警告的目的!