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

PowerShell查询含特定字符串描述的AD计算机命令报错求助

问题分析与解决方案

你的命令存在三个核心问题:

  • Where-Object语法错误:必须用脚本块{}包裹筛选条件,直接写Where $_.Description不符合PowerShell语法规范,导致参数识别失败。
  • 错误使用-Contains运算符:-Contains用于检查集合是否包含完整元素,而非字符串的部分匹配。要查找描述中包含特定文本的计算机,应使用-Like(支持通配符)或-Match(支持正则匹配)。
  • 低效的管道顺序:先执行Select-Object Description会提前丢弃其他计算机属性,且先筛选再选择属性的效率更高——避免对所有对象执行不必要的属性选择操作。

正确的单行命令

基础版(仅获取计算机名与描述)

Get-ADComputer -Properties Description | Where-Object { $_.Description -Like "*Name*" } | Select-Object Name, Description
  • -Properties Description:仅加载需要的Description属性,比-Properties *更高效(避免加载所有AD计算机属性)
  • Where-Object { $_.Description -Like "*Name*" }:用通配符*匹配包含"Name"的描述文本
  • Select-Object Name, Description:按需选择要输出的属性

进阶版(保留所有默认AD属性)

如果需要查看AD计算机的默认属性(如DNSHostName、SamAccountName等),去掉最后的Select-Object即可:

Get-ADComputer -Properties Description | Where-Object { $_.Description -Like "*Name*" }

正则匹配版(复杂匹配场景)

若需要更灵活的匹配规则(如区分大小写、匹配特定格式),可使用-Match结合正则表达式:

Get-ADComputer -Properties Description | Where-Object { $_.Description -Match "(?i)Name" }

(?i)表示忽略大小写,可根据需求调整正则规则。

补充说明

如果确实需要先查看所有描述再筛选,可调整管道顺序(但不推荐,效率较低):

Get-ADComputer -Properties Description | Select-Object Name, Description | Where-Object { $_.Description -Like "*Name*" }

另外,若Description字段为空,-Like会自动跳过这些对象,无需额外判断空值。

内容的提问来源于stack exchange,提问作者Stanisław Bateńczuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:42:09