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

如何修改PowerShell脚本导出从未在所有AD域控制器登录的账户

问题:筛选从未在任何域控制器登录过的AD用户

需要找出**所有域控制器中LastLogon属性均未设置日期(值为0或'1/01/1601 11:00:00 AM')**的AD用户账户,即该用户从未在任何一台DC上登录过。

示例场景

假设共有36台域控制器:

  • User1在DC1、DC2有登录记录 → 不纳入结果
  • User2仅在DC2有登录记录 → 不纳入结果
  • User3仅在DC32有登录记录 → 不纳入结果
  • User4在所有36台DC均无登录记录 → 需要导出到CSV
  • User5在所有36台DC均无登录记录 → 需要导出到CSV

现有PowerShell脚本会错误返回仅在部分DC登录过的用户,需修改脚本使其仅导出符合要求的用户。


原脚本问题分析

原脚本的核心错误在于循环中错误引用了管道对象$_.lastLogon,而非当前从DC获取到的$adUser对象的LastLogon属性,导致登录记录的判断逻辑失效,进而错误返回不符合条件的用户。


修改后的脚本
Function Get-ADLastLogonNever {
[CmdletBinding()]
Param (
    [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
    [ValidateNotNullOrEmpty()]
    [String]$SAMAccountName
)
    Begin {
        # 获取所有域控制器
        $allDCs = Get-ADDomainController -Filter *
    }
    Process {
        $neverLoggedOn = $true
        ForEach ($dc in $allDCs) {
            # 从当前DC获取用户的LastLogon属性
            $adUser = Get-ADUser -Identity $SAMAccountName -Properties LastLogon, DisplayName -Server $dc.Name
            # 检查当前DC上的LastLogon值是否大于0(即存在登录记录)
            If ($adUser.LastLogon -gt 0) {
                $neverLoggedOn = $false
                Break # 只要有一台DC有记录,就无需继续检查其他DC
            }
        }
        If ($neverLoggedOn) {
            # 输出符合条件的用户信息
            $adUser | Select-Object -Property `
                SamAccountName,
                DisplayName,
                @{n = 'DC'; e = {'<All>'}},
                @{n = 'LastLogon'; e = {'<Never>'}}
        }
    }
}

# 从指定组中筛选符合条件的用户并导出到CSV(添加UTF8编码避免中文乱码)
'IT Team', 'Finance Team', 'HR Team' |
    Get-ADGroupMember |
    Get-ADLastLogonNever |
    Export-Csv -Path C:\result.csv -NoTypeInformation -Encoding UTF8

关键修改点

  1. 修正属性引用:将$_.lastLogon改为$adUser.LastLogon,确保正确判断当前DC返回的用户登录记录
  2. 优化导出编码:添加-Encoding UTF8参数,避免导出CSV时出现中文乱码问题

内容的提问来源于stack exchange,提问作者Senior Systems Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:45:46