我目前正试图找出在过去的30天里,哪些特定组的成员没有登录到AD。我已经成功地返回了这个组的所有用户,但是当我将它连接到Foreach-object循环时,我遇到了问题。
import-module activedirectory
$DaysInactive = 30
$time = (Get-Date).Adddays(-($DaysInactive))
get-adgroupmember -identity "Remote Users" | foreach-object {
if ($_.LastLogonDate -lt $time) {
write-host $_.SamAccountName
}
}我认为问题在于,在调用LastLogonDate时,我使用了一个AD用户属性,因此我收到了一个错误,表示它没有被识别。我想象在循环中,我需要一个get-aduser cmdlet,但是我不知道作为-filter的值应该发送什么。
当PowerShell从get-adgroupmember检索所有成员时,它是否将结果集放在数组中?如果是这样,如何检索上一次登录日期的值?
发布于 2014-11-25 16:56:02
像这样吗?
Get-ADGroupMember -recursive -identity "Remote Desktop" |
Where { $_.objectClass -eq "user" } |
Get-ADUser -properties SamAccountName, LastLogonDate |
Where { $_.LastLogonDate -lt $time } |
select SamAccountName发布于 2014-11-25 16:58:19
好吧,我没有时间对它进行全面的测试,所以它已经结束了,但是这应该会让你朝着正确的方向前进:
import-module activedirectory
$DaysInactive = 30
$time = (Get-Date).Adddays(-($DaysInactive))
$users = get-adgroupmember -identity "Remote Users"
foreach($user in $users){
$lastLogin = (Get-ADUser $user -Property LastLogonDate).LastLogonDate
if($lastLogin -lt $time){
Write-Host $user.SamAccountName
}
}https://stackoverflow.com/questions/27131543
复制相似问题