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

禁用AD计算机对象并移至禁用OU脚本失效求助

排查PowerShell AD脚本升级Server2019后失效的步骤

以下是针对你的脚本在Server 2012 R2升级到2019后失效的具体排查方向和修复建议:

  • 替换AD查询的脚本块Filter为字符串格式
    Server 2019的Active Directory模块对脚本块形式的Filter兼容性有所变化,原脚本中的{ LastLogonDate -lt $cutoff -and enabled -eq $true }可能无法正确解析。建议修改为字符串Filter:

    Get-ADComputer -Filter "LastLogonDate -lt '$cutoff' -and enabled -eq 'True'" -Properties lastlogondate |
    

    若仍有问题,可将$cutoff转换为AD兼容的时间格式后再传入:

    $cutoffStr = $cutoff.ToString('yyyyMMddHHmmss.0Z')
    Get-ADComputer -Filter "LastLogonDate -lt '$cutoffStr' -and enabled -eq 'True'" -Properties lastlogondate |
    
  • 验证目标计算机的LastLogonDate属性值
    手动检查几个确认符合条件的计算机,执行:

    Get-ADComputer "目标计算机名" -Properties LastLogonDate | Select-Object Name, LastLogonDate
    

    确认返回的LastLogonDate确实早于6个月前,同时检查AD站点复制是否正常,避免因属性未同步导致查询不到对象。

  • 添加错误捕获以定位具体问题
    原脚本无错误处理,失效时无法获取报错信息。修改脚本加入try/catch块,捕获执行过程中的错误:

    $cutoff = (Get-Date).AddMonths(-6)
    Get-ADComputer -Filter "LastLogonDate -lt '$cutoff' -and enabled -eq 'True'" -Properties lastlogondate |
    foreach-object {
        try {
            $Today = Get-Date -Format d
            $Time = Get-Date -Format t
            $Destination = "OU=Computers,OU=Disabled Objects,DC=DOMAIN,DC=COM"
            $SourceOU = $_.Distinguishedname
            $Description = "Disabled on $Today at $Time - Source OU was $SourceOU"
            Set-ADComputer $_.distinguishedname -Description $Description -Enabled $false -ErrorAction Stop
            Move-ADObject $_.distinguishedname -TargetPath $Destination -ErrorAction Stop
            Write-host "Moved $($_.distinguishedname) to $Destination"
        }
        catch {
            Write-Error "处理 $($_.Name) 失败: $_"
        }
    }
    

    运行修改后的脚本,根据错误提示定位问题(如权限不足、目标OU路径错误等)。

  • 检查执行账号的权限
    升级服务器后,运行脚本的账号可能丢失了AD对象的修改/移动权限。手动用该账号执行单个测试命令:

    # 禁用测试计算机
    Set-ADComputer "测试计算机名" -Enabled $false
    # 移动测试计算机到目标OU
    Move-ADObject "测试计算机的DN" -TargetPath "OU=Computers,OU=Disabled Objects,DC=DOMAIN,DC=COM"
    

    若执行失败,需重新配置该账号的AD权限。

  • 确认AD模块的参数兼容性
    检查Server 2019上AD模块的cmdlet参数是否有变化,执行Get-Help Get-ADComputer -Parameter Filter查看官方说明,确保Filter语法符合新版本要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:47:28