首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ForEach-object循环中的嵌套IF语句

ForEach-object循环中的嵌套IF语句
EN

Stack Overflow用户
提问于 2014-11-25 16:11:04
回答 2查看 1.6K关注 0票数 0

我目前正试图找出在过去的30天里,哪些特定组的成员没有登录到AD。我已经成功地返回了这个组的所有用户,但是当我将它连接到Foreach-object循环时,我遇到了问题。

代码语言:javascript
复制
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检索所有成员时,它是否将结果集放在数组中?如果是这样,如何检索上一次登录日期的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-25 16:56:02

像这样吗?

代码语言:javascript
复制
Get-ADGroupMember -recursive -identity "Remote Desktop" |
    Where { $_.objectClass -eq "user" } |
    Get-ADUser -properties SamAccountName, LastLogonDate |
    Where { $_.LastLogonDate -lt $time } |
    select SamAccountName
  • 滤除组
  • 我想你想要所有嵌套的成员?
  • 加载LastLogonDate
票数 1
EN

Stack Overflow用户

发布于 2014-11-25 16:58:19

好吧,我没有时间对它进行全面的测试,所以它已经结束了,但是这应该会让你朝着正确的方向前进:

代码语言:javascript
复制
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
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27131543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档