使用PowerShell按邮箱大小对数据中的csv输出文件进行排序
我有一个脚本,这是没有任何问题的工作,我唯一的问题是,我不能秩序的输出,因为我需要 我试图删除Sort-object CmdLet,但它没有改变任何事情,我还尝试“玩”Sort-object CmdLet的各种变体 代码如下:使用PowerShell按邮箱大小对数据中的csv输出文件进行排序,powershell,sort-object,Powershell,Sort Object,我有一个脚本,这是没有任何问题的工作,我唯一的问题是,我不能秩序的输出,因为我需要 我试图删除Sort-object CmdLet,但它没有改变任何事情,我还尝试“玩”Sort-object CmdLet的各种变体 代码如下: $users = Import-Csv "C:\CSV Test\Alias_test.csv" foreach ($user in $users) { Get-MailboxStatistics -Identity $user.UserName |
$users = Import-Csv "C:\CSV Test\Alias_test.csv"
foreach ($user in $users) {
Get-MailboxStatistics -Identity $user.UserName |
Select-Object @{l="User Name";e="DisplayName"},
@{l="Mail Box Size";e="TotalItemSize"},
@{l="TotalEmails?";e="itemcount"} |
Sort-Object -Property ItemCount|
Export-Csv "C:\CSV Test\Mailboxe_size.csv" -Append -NoTypeInformation
} #end of ForEach loop
csv文件如下所示:
非常感谢您的帮助您当前的脚本存在两个问题 首先,每个用户的邮箱统计信息都是单独排序的,因此将
Sort Object
语句移到循环之外
第二个问题是,在对对象进行排序时,ItemCount
属性不再存在,因为您已将其重命名为TotalEmails?
,因此请确保更新属性
参数:
$users = Import-Csv "C:\CSV Test\Alias_test.csv"
$stats = foreach ($user in $users) {
Get-MailboxStatistics -Identity $user.UserName |
Select-Object @{l="User Name";e="DisplayName"},
@{l="Mail Box Size";e="TotalItemSize"},
@{l="TotalEmails?";e="itemcount"}
} #end of ForEach loop
$Stats |Sort-Object -Property TotalEmails? |Export-Csv "C:\CSV Test\Mailboxe_size.csv" -Append -NoTypeInformation
您应该将
排序对象
和导出CSV
部分移到foreach循环之外。。。这样应该会快一点,您可以对所有对象进行排序,而不是对每个对象进行排序。;-)感谢您的重播,我需要在最后一个“}”之后使用相同的格式,您的意思是:}#foreach循环结束排序对象-属性ItemCount |导出Csv“C:\Csv Test\Mailboxe\u size.Csv”-Append-NoTypeInformation
非常感谢您的帮助为什么在“totlaels”之后使用“?”?我猜是弄错了?我很好奇,带字符串表达式的计算属性如何生成图片输出。@WebGhost,因为您在原始帖子中使用了TotalEmails?
,所以我想真正的问题是,为什么在邮件总数之后使用?
:D@LotPings计算属性中的字符串表达式扩展为取消对命名属性的引用,OPs输出“按设计工作”。请尝试“Hello World?”|选择@{Name='NumberOfChars';Expression='Length'}
yourself@LotPings我没有Exchange实验室atm的访问权限,但假设内存没有泄露,则“是”值是可排序的:)