结合get-user get-mailboxstatistics exchange 2010

时间:2017-01-06 03:02:55

标签: powershell exchange-server

我需要为Exchange Server 2010创建一个报告。

我需要用户显示名称,lastlogontime和帐户状态,即启用或禁用。

get-mailbox statistics显示lastlogon和get-user可以显示帐户控制状态。

所以无论如何我都试过这个。

Get-User -ResultSize Unlimited | Where { $_.RecipientType -eq ‘UserMailbox’ } | ForEach { $Users = @{} } { $Users[$_.SamAccountName] = $_ }
get-mailboxstatistics -server 00-exchbx01 |
  ForEach {
    New-Object psobject |
    Add-Member -PassThru NoteProperty name $_.name |
    Add-Member -PassThru NoteProperty lastlogontime $_.lastlogontime |
    Add-Member -PassThru NoteProperty UserAccountControl $Users[$_.SamAccountName].UserAccountControl
  } |select name,lastlogontime,useraccountcontrol |sort-lastlogontime -descending | export-csv c:\ussersxx.csv -nti

还尝试过没有运气但有任何帮助吗?

Get-User -ResultSize Unlimited | Where { $_.RecipientType -eq ‘UserMailbox’ } | ForEach { $Users = @{} } { $Users[$_.SamAccountName] = $_ } | get-mailboxstatistics -server 00-exchbx01  | select Name,useraccountcontrol, lastlogontime|sort-lastlogontime -descending | Export-csv c:\report.csv
`

2 个答案:

答案 0 :(得分:0)

这里有几件事,除了你的最后一行外,其中大部分内容都很好:

 ||sort-lastlogontime -descending |

这应该成为:

 | sort -property lastlogontime -descending |

您还会遇到的问题是,您最终可能会遇到来自Get-MailboxStatistics不在您的$Users哈希表中的管道。这将导致在使用哈希表填充psobject属性时出错。

可以调整这个以迭代哈希表,传递SamAccountName作为Identity属性的值(但这可能会更慢),或者添加一些错误处理以便你只是最终得到一个空的财产,而不是完全错误。

答案 1 :(得分:0)

这应该这样做。

$outtbl = @()
$users = Get-User -ResultSize Unlimited | Where { $_.RecipientType -eq ‘UserMailbox’ }
$users | % {
  $x = Get-MailboxStatistics $_ | Select LastLogonTime
  $t = New-Object PSObject -Property @{
    Name = $_.Name
    LastLogonTime = $x.LastLogontime
    UserAccountControl = $_.UserAccountControl
  }
  $outtbl += $t
}

这就是我总是这样做的方式"结合不同命令的结果"类型场景。

然后,您可以$outtbl | Sort LastLogonTime -Descending | Export-Csv c:\ussersxx.csv -nti导出数据