2012-02-13 60 views
0

我在PowerShell中使用Measure-Object和-Sum标记汇总了Exchange邮箱数据库中的多个文件大小的结果。这个操作的结果是一个似乎只保存一个整数值的对象。如何从更复杂的对象中提取出原始值?

我需要将这个总和与另一个总和进行比较,但我被告知“总和”对象没有实现“IComparable”。所以我真正需要的是从“Measure-Object”命令返回的这个对象中的单个整数值。

(用于测试)实施例:

[PS]> $尺寸1 = GET-MailboxStatistics -Database一些\交换\数据库| select-object {$ .TotalItemSize/1MB} | Measure-Object -Property'$ .TotalItemSize/1MB'-Sum |选择总和

[PS]> $ size2 = Get-MailboxStatistics -Database Someother \ Exchange \ Database | select-object {$ .TotalItemSize/1MB} | Measure-Object -Property'$ .TotalItemSize/1MB'-Sum |选择总和

不起作用:

回波($尺寸1 -lt $ size2个)

+0

请注意,它应该是$ _。TotalItemSize/1MB,下划线将从问题中删除。 – Resorath 2012-02-13 18:13:45

+0

另请注意:这是相关的,但不(似乎?)回答我的查询:http://stackoverflow.com/questions/7408111/how-do-i-return-only-the-integer-sum-of-measure -object-in-powershell – Resorath 2012-02-13 18:14:52

回答

3
Get-MailboxStatistics -Database Some\Exchange\Database | 
foreach {$size1 += $_.totalitemsize.value.tobytes()/1mb} 
+0

有趣的感谢。让我想知道那时.Sum的重点。 – Resorath 2012-02-13 18:41:19

+0

measure-object在get-mailboxstatistics为size属性返回的ByteQuantifiedSize类型上不起作用。 – mjolinor 2012-02-13 18:44:14

2

这将返回具有包含属性GenericMeasureInfo对象实际总和。试试echo ($size1.Sum -lt $size2.Sum)

+0

啊,那也行。这正是我所期待的。 – Resorath 2012-02-13 20:33:08

+0

将东西管道给Get-Member通常对这样的东西很有帮助。所以将它们转储到变量中,然后执行$ var.GetType()。 – JamieSee 2012-02-13 22:12:25