Exchange powershell Export-csv

时间:2014-10-09 16:59:04

标签: powershell exchange-server

首先关闭一点警告我的PowerShell技能非常有限,所以我可能会重新发明轮子并且做得很糟。

无论如何,我正在尝试创建/运行脚本,使用邮件跟踪日志将所有已发送邮件的记录提取到所有帐户。我遇到的问题是将结果导出到csv时,几乎看起来好像结果是加密的。以下是我设法拼凑的代码:

$msg = Get-TransportServer server_to_query | Get-MessageTrackingLog -ResultSize Unlimited -Start "10/01/2014 10:00:00" -End "10/01/2014 11:00:00" -EventID deliver | select-object -ExpandProperty Recipients | Group-Object | sort count -desc | ft -auto  

现在我知道它给了我想要的信息,因为当我在下面做的时候它会显示前10条记录以及总数。

$msg.count
$msg | select -first 10

然而,当我在下面做的时候,即使看起来很近也不会把它输出到任何东西。

$msg | Export-CSV export.csv 

它很可能是非常基本的,我缺少或不理解但是我觉得我现在正在循环。任何正确方向的指针都会很棒。

由于 标记

1 个答案:

答案 0 :(得分:2)

您的主要问题是您使用$msg的结果填充format-table。几乎任何人都会说它只适用于shell输出。如果您打算对数据执行任何其他操作Format-Table,那么就不行了。首先,删除ft -auto

$msg = Get-TransportServer server_to_query | Get-MessageTrackingLog -ResultSize Unlimited -Start "10/01/2014 10:00:00" -End "10/01/2014 11:00:00" -EventID deliver | select-object -ExpandProperty Recipients | Group-Object | sort count -desc

之后它会更好地导出,但你会在你的csv中看到这样的东西:

"System.Collections.ArrayList","17","System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]"

由于大多数此类数据只是一遍又一遍重复的电子邮件地址,我想知道您是否应该像这样输出。

$msg | select name,count -first 10 | Export-Csv c:\temp\test.csv

不知道这是你想要的输出,但它看起来像是。