首先关闭一点警告我的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
它很可能是非常基本的,我缺少或不理解但是我觉得我现在正在循环。任何正确方向的指针都会很棒。
由于 标记
答案 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
不知道这是你想要的输出,但它看起来像是。