【问题标题】:Simplify Get-Messagetrackinglog with a new function including MB Conversion使用包括 MB 转换在内的新功能简化 Get-Messagetrackinglog
【发布时间】:2014-06-24 00:00:19
【问题描述】:

我想创建一个自定义函数来简化 get-messagetrackinglog 命令行开关。 没什么复杂的,只是稍微简化了查询。

函数正常工作,但如果需要,我想在函数中将总字节数转换为千字节。

function Get-ExchangeMessagetrackinglog {
.Synopsys
.Description
.Example
Get-ExchangeMessagetrackinglog -Recipient "user@tld.com" -Sender "sender@tld.com" -Begin "01/04/2014" -Ende "05/05/2014" | select Timestamp,Sender,Recipients,Messagesubject,@{label="Kilobytes";Expression={[int]($_.totalbytes/1kb)} }| ft -auto

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 } | `
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} 
}

我的问题: 是否可以简化函数调用(.example)? 我不熟悉创建自定义对象,但可以创建一个 totalkilobytes 对象。

谢谢!

【问题讨论】:

  • 抱歉格式错误。不知道为什么,在预览中一切看起来都很好。 :(

标签: powershell exchange-server powershell-2.0 exchange-server-2010


【解决方案1】:

我的回答不是创建一个新的 PSCustom 对象,而是修改您的并返回一个字符串 return ("TotalKB: " + $totalKB) 作为您的最终总数。我还将整个 select Timestamp.. 块移动到 main 函数的主体中。

function Get-ExchangeMessagetrackinglog {
.Synopsys
.Description
.Example
Get-ExchangeMessagetrackinglog -Recipient "user@tld.com" -Sender "sender@tld.com" -Begin "01/04/2014" -Ende "05/05/2014"

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 } | `
$results = 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}

$totalKB = 0

foreach($entry in $results)  { 
    $totalKB += $entry.totalbytes
}

$totalKB = $totalKB/1kb

$results | select Timestamp,Sender,Recipients,Messagesubject,@{label="Kilobytes";Expression={[int]($_.totalbytes/1kb)} }| ft -auto

return ("TotalKB: " + $totalKB)

}

让我知道你的进展如何,因为它未经测试。

【讨论】:

  • 嗨,感谢您的回复,但我认为转换它/或添加一个对象更有意义。
【解决方案2】:

您对此有何看法?

    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 属性每个返回值。
  • 可能我的解释不是很清楚。这个解决方案对我有用。谢谢
猜你喜欢
  • 2018-09-02
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
相关资源
最近更新 更多