如何从邮箱查询中显示LastLogonTime的值

时间:2014-10-31 08:10:58

标签: powershell powershell-v2.0

如何显示属性LastLogonTime

function Get-MailboxesNotLoggedOnTo {
    param(
        [int]$days = 90
    )

    $mailboxes = Get-Mailbox -ResultSize 500
    $mailboxes | Where-Object {
        (Get-MailboxStatistics $_).LastLogonTime -and
        (Get-MailboxStatistics $_).LastLogonTime -le (Get-Date).AddDays(-$days)
    } | FT DisplayName, Alias, ServerName, LastLogonTime
}

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为Get-Mailbox不会返回名为LastLogonTime的属性。 Get-MailboxStatistics。您需要做的是将时间戳添加为输出的属性

$mailboxes = Get-Mailbox -ResultSize 200
$mailboxes | Where-Object {
    (Get-MailboxStatistics $_).LastLogonTime -and
    (Get-MailboxStatistics $_).LastLogonTime -le (Get-Date).AddDays(-$days)
} | ForEach-Object {Add-Member -InputObject $_ -MemberType NoteProperty -Name LastLogonTime -Value (Get-MailboxStatistics $_).LastLogonTime -PassThru} |
Select DisplayName, Alias, ServerName, LastLogonTime

使用Add-Member我们可以填写缺失的部分。我遇到的一个问题是对Get-MailboxStatistics的多次调用,我现在致力于改进。应该是更接近这一点。

$checkDate = (Get-Date).AddDays(-90)
$mailboxes = Get-Mailbox -ResultSize 200 
$mailboxes | ForEach-Object{
    $stats = Get-MailboxStatistics $_
    If ($stats.LastLogonTime -and ($stats.LastLogonTime -le $checkDate)){
        Add-Member -InputObject $_ -MemberType NoteProperty -Name LastLogonTime -Value $stats.LastLogonTime -PassThru
    }
} | Select DisplayName, Alias, ServerName, LastLogonTime

Get-MailboxStatistics的额外调用会使速度变慢。减少了对一个人的呼叫。仍然使用Add-Member-PassThru,它只是输出到select语句。这应该是一种更有效的方法。