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

通过PowerShell脚本排除特定服务器的技术问题

PowerShell排除AD中特定计算机对象的脚本修正

你的脚本未达到预期效果,核心问题是Get-ADComputer的Filter语法错误:Enabled -eq $True后面缺少逻辑运算符-and,导致整个筛选条件无法被正确解析。另外,使用脚本块形式的Filter偶尔会出现解析异常,推荐改用字符串格式的筛选条件,同时可以简化计算机名称的收集逻辑。

修正后的完整脚本

$ADComputers = @()
$ADGroups = @()
$ComputersNotInAD = @()
$GroupsNotInAD = @()

# 指定要查询的OU
$OU = 'OU=Tier1,DC=contoso,DC=local','OU=Servers,DC=contoso,DC=local'

# 修正Filter语法,改用字符串格式筛选,同时直接提取名称
$ADComputers = $OU | ForEach-Object {
    Get-ADComputer -Filter "Enabled -eq `$True -and Name -notlike 'server11*' -and Name -notlike 'tstsrv11*'" `
                   -SearchBase $PSItem | Select-Object -ExpandProperty Name
}

关键改进点

  • 修复Filter语法:在Enabled -eq $True后添加-and,确保三个筛选条件(启用状态、排除server11开头、排除tstsrv11开头)逻辑连贯。
  • 改用字符串Filter:避免脚本块Filter的潜在解析问题,注意字符串中$True需要用反引号转义(`$True),防止PowerShell提前解析变量。
  • 简化名称收集:直接用Select-Object -ExpandProperty Name一次性提取名称字符串,替代原有的循环赋值,提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:23:08