如何显示属性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
}
答案 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语句。这应该是一种更有效的方法。