You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PowerShell脚本筛选LastSignInDate为空或早于90天的用户

筛选LastSignInDate为空或超过90天未登录的启用用户

以下是修改后的完整PowerShell脚本,可实现你需要的筛选逻辑:

# 连接Microsoft Graph
Connect-MgGraph -Scopes Directory.Read.All,AuditLog.Read.All

# 计算90天前的零点日期(避免时间部分干扰筛选)
$ninetyDaysAgo = (Get-Date).AddDays(-90).Date

# 获取符合条件的用户并导出CSV
Get-MgUser -All -Filter "accountEnabled eq true" -Property 'UserPrincipalName','SignInActivity','DisplayName', 'AccountEnabled' |
    Where-Object {
        # 筛选规则:从未登录(SignInActivity或LastSignInDateTime为空),或登录日期早于90天前
        ($null -eq $_.SignInActivity -or $null -eq $_.SignInActivity.LastSignInDateTime) -or
        $_.SignInActivity.LastSignInDateTime -le $ninetyDaysAgo
    } |
    Select-Object @{N='UserPrincipalName';E={$_.UserPrincipalName}},
                  @{N='DisplayName';E={$_.DisplayName}},
                  @{N='LastSignInDate';E={$_.SignInActivity.LastSignInDateTime}},
                  @{N='AccountEnabled';E={$_.AccountEnabled}} |
    Export-Csv -Path "C:\Suraj\New folder\usernew1.csv" -NoTypeInformation -NoClobber

关键修改说明

  • 日期计算:用(Get-Date).AddDays(-90).Date获取90天前的零点日期,确保筛选逻辑只对比日期部分,不会因当天时间差异误判。如果需要精确到时分秒的比较,去掉.Date即可。
  • 筛选逻辑:通过Where-Object添加双重判断:
    1. 覆盖从未登录过的用户(SignInActivity或LastSignInDateTime为空);
    2. 覆盖登录日期早于等于90天前的用户。
  • 路径简化:将CSV路径的双反斜杠改为单斜杠,符合PowerShell常规写法,避免不必要的转义。

内容的提问来源于stack exchange,提问作者SRP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:53:18