我需要为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
`
答案 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
导出数据