Powershell 使用包含MB转换的新函数简化Get-Messagetrackinglog

Powershell 使用包含MB转换的新函数简化Get-Messagetrackinglog,powershell,exchange-server,powershell-2.0,exchange-server-2010,Powershell,Exchange Server,Powershell 2.0,Exchange Server 2010,我想创建一个自定义函数来简化get-messagetrackinglog命令。 这并不复杂,但简化了一点查询 该函数工作正常,但如果需要,我想将函数中的totalbytes转换为kilbyte 函数Get-ExchangeMessagetrackinglog{ .Synopsys 描述 实例 获取ExchangeMessagetrackinglog-收件人user@tld.com-发送者sender@tld.com-2014年4月1日开始-2014年5月5日结束|选择时间戳、发送者、接收者、Me

我想创建一个自定义函数来简化get-messagetrackinglog命令。 这并不复杂,但简化了一点查询

该函数工作正常,但如果需要,我想将函数中的totalbytes转换为kilbyte

函数Get-ExchangeMessagetrackinglog{ .Synopsys 描述 实例 获取ExchangeMessagetrackinglog-收件人user@tld.com-发送者sender@tld.com-2014年4月1日开始-2014年5月5日结束|选择时间戳、发送者、接收者、Messagesubject,@{label=KB;表达式={[int]$\u0.totalbytes/1kb}}| ft-自动 param [字符串]$ExchangeConnector=*, [String]$Begin=get-date.AddDays-120, [Datetime]$Ende=获取日期-uformat%m/%d/%y%T, [字符串]$Recipient=*, [字符串]$Sender=*, [String]$EventID=Receive, [字符串]$Source=SMTP 获取Exchangeserver|` 其中{$\.isHubTransportServer-eq$True-或$\.isMailboxServer-eq$True}` get-messagetrackinglog-Start$Begin-End$Ende-ResultSize Unlimited |` 其中对象{` $\收件人-如$Recipient-和` $\ sender-类似于$sender-和` $\u0.EventID-eq$EventID-和` $\.Source-类似于$Source-和` $\与.connectorID类似的$ExchangeConnector} } 我的问题: 是否可以简化函数调用。示例? 我不熟悉创建自定义对象,但可以创建TotalKB对象


谢谢

我的答案不是创建一个新的PSCustom对象,而是修改并返回一个字符串return TotalKB:+$TotalKB作为最终总数。我还移动了整个select时间戳。。块进入主体功能

函数Get-ExchangeMessagetrackinglog{ .Synopsys 描述 实例 获取ExchangeMessagetrackinglog-收件人user@tld.com-发送者sender@tld.com-2014年4月1日开始-2014年5月5日结束 param [字符串]$ExchangeConnector=*, [String]$Begin=get-date.AddDays-120, [Datetime]$Ende=获取日期-uformat%m/%d/%y%T, [字符串]$Recipient=*, [字符串]$Sender=*, [String]$EventID=Receive, [字符串]$Source=SMTP 获取Exchangeserver|` 其中{$\.isHubTransportServer-eq$True-或$\.isMailboxServer-eq$True}` $results=get messagetrackinglog-Start$Begin-End$Ende-ResultSize Unlimited |` 其中对象{` $\收件人-如$Recipient-和` $\ sender-类似于$sender-和` $\u0.EventID-eq$EventID-和` $\.Source-类似于$Source-和` $\与.connectorID类似的$ExchangeConnector} $totalKB=0 在$results{ $totalKB+=$entry.totalbytes } $totalKB=$totalKB/1kb $results |选择时间戳、发送者、接收者、Messagesubject,@{label=KB;表达式={[int]$\ totalbytes/1kb}}| ft-auto 返回TotalKB:+$TotalKB }
让我知道你的进展如何,因为它没有经过测试。

你对此有何看法

    function Get-ExchangeMessagetrackinglog {

param( 
 [String]$ExchangeConnector = "*",
 [String]$Begin=(get-date).AddDays(-120),
 [Datetime]$Ende=(get-date -uformat "%m/%d/%y %T"),
 [String]$Recipient = "*",
 [String]$Sender = "*",
 [String]$EventID = "Receive",
 [String]$Source = "SMTP"
)

#Get-Exchangeserver | where { $_.isHubTransportServer -eq $True -or $_.isMailboxServer -eq $True } | 
$Return= get-messagetrackinglog  -Start $Begin -End $Ende -ResultSize Unlimited | where-object { $_.recipients -like $Recipient -and $_.sender -like $Sender -and $_.EventID -eq $EventID -and $_.Source -like $Source -and $_.connectorID -like $ExchangeConnector} 
foreach ($returnvalue in $return) { $Returnvalue | add-member -MemberType Noteproperty -Name TotalKB -Value ([math]::round($returnvalue.totalbytes/ 1kb,2 )) 
                                     $Returnvalue | add-member -MemberType Noteproperty -Name TotalMB -Value ([math]::round($returnvalue.totalbytes/ 1MB,2 ))
                                   }
$return 




}
Get-ExchangeMessagetrackinglog -Begin "01/05/2014" -Ende "05/05/2014" | select timestamp,totalkb,sender,recipients,messagesubject | sort totalkb | ft -auto

对不起,格式不好。不知道为什么,在预览中,一切看起来都很好您好,谢谢您的回复,但我认为转换它/或添加对象更有意义。如果这达到了您的需要,那就太好了!我不知道您的主要要求是为每个返回值添加总KB/MB属性。可能我的解释不太清楚。这个解决方案对我有效。谢谢