【发布时间】:2014-11-26 12:33:47
【问题描述】:
我目前正试图找出特定组的哪些成员在过去 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 检索所有成员时,它是否将结果集放入数组中?如果是这样,我如何检索上次登录日期的值?
【问题讨论】:
-
应该是:
if ($_.LastLogonDate -lt $time) -
此外,默认情况下不检索 .LastLogonDate 属性。您需要获取从 Get-ADGroupMember 返回的每个项目,并使用 Get-ADUser 显式获取 .LastLogonDate 属性。
-
@EBGreen 你是对的。由于应用了 arco444 的建议,它现在返回所有成员而不似乎评估条件语句。当我需要指定过滤器时,我应该使用 Get-ADUser 指定什么?
-
请用您当前的代码编辑您的问题。
标签: powershell active-directory