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

查询AD陈旧计算机账户:排除VDI黄金镜像账户失败求助

解决AD陈旧计算机账户查询时排除VDI黄金镜像的问题

我来帮你搞定这个困扰!你遇到的问题大概率是筛选条件的逻辑没组合对——既要找出90天未登录的账户,又要排除名称含VDI的黄金镜像,得把两个条件用正确的逻辑连接起来。

修正后的完整代码

先给你能直接用的脚本,我会逐段解释:

# 先计算出90天前的日期作为判断阈值
$90DaysAgo = (Get-Date).AddDays(-90)

# 查询AD中符合条件的计算机账户
Get-ADComputer -Filter * -Properties LastLogonDate | 
    Where-Object {
        # 两个条件必须同时满足:要么从未登录过,要么最后登录时间早于90天前;并且名称不含VDI
        ($_.LastLogonDate -eq $null -or $_.LastLogonDate -le $90DaysAgo) -and 
        $_.Name -notlike "*VDI*"
    } | 
    # 按需选择要展示的属性
    Select-Object Name, LastLogonDate, DistinguishedName

关键注意点

  1. 逻辑条件的组合:一定要用-and把「陈旧账户」和「非VDI账户」两个条件绑定在一起,这样才会同时过滤掉不符合的项。
  2. 处理无登录记录的账户:有些计算机可能从未登录过(比如刚创建的测试账户),LastLogonDate会是null,加上$_.LastLogonDate -eq $null可以把这类账户也纳入陈旧范围(如果不需要的话可以删掉这个分支)。
  3. 灵活调整匹配规则:如果你的VDI黄金镜像有特定命名规则(比如前缀是VDI-,或者后缀是_Gold),可以修改-notlike的匹配模式,比如改成-notlike "VDI-*"或者-notlike "*_Gold",这样筛选更精准。

常见错误排查

如果你之前的代码没生效,可能是这几个原因:

  • 只加了时间筛选,完全没写排除VDI的条件;
  • 把-and写成了-or,导致只要满足其中一个条件就会被保留;
  • 把排除条件写在了另一个Where-Object块,或者位置不对,导致过滤失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:54:42