我想在去年以来从未使用过任何服务器的AD组中找到不 Activity 的用户。我不想找到整个AD的非 Activity 用户,而是一个特定的组。任何可以执行此操作的PowerShell命令?

我试过了:

Get-AdGroupMember -identity “Groupname” –AccountInactive -DateTime ‘1/12020’ –ResultPageSize 2000 –ResultSetSize $null |
?{$_.Enabled –eq $True} | select name |
Export-CSV -path

并且我还尝试了以下方法:
Get-AdGroupMember -identity “Groupname” | select name, lastlogon

在第一个中,它给我一个错误,它无法识别参数AccountInnactiveDatetime,第二个命令中的lastlogon表为空

最佳答案

$DaysInactive = 90
$time = Get-Date
Get-ADGroupMember "*GroupName*" -Recursive | get-aduser -Properties lastlogon |
where {[DateTime]::FromFileTime($_.LastLogon) -lt ($time).Adddays(-($DaysInactive)) -and $_.enabled -eq $true } |
select name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}}

在上面的代码中,我们将Get-ADGroupMember的结果传递给get-aduser,以明确询问laSTLogon详细信息(带有-properties lastlogon),因为它不是cmdlet显示此属性的默认属性之一,如果没有它,它将没有任何值(value)。

通过应用日期比较,将结果从get-aduser传递到where-object cmdlet,可以进一步缩小结果范围。为了比较日期,我们首先将laSTLogon值转换为[DateTime]::FromFileTime($_.LastLogon)使用的相同类型的[DateTime] Get-Date,以便我们进行比较

10-06 04:14