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

批量获取AD组内计算机描述时PowerShell报InvalidArgument错误

问题解决:PowerShell获取AD组内计算机描述时的InvalidArgument错误

错误原因

你在批量执行Get-AdComputer时同时使用了-Filter *和-Identity参数,这两个参数属于互斥的参数集,PowerShell无法同时解析这两个参数,因此触发了ParameterBindingException错误。单独执行时你大概率没同时用这两个参数,所以能正常运行。

修复后的代码

直接用-Identity参数指定计算机名即可,不需要加-Filter *:

$UL = Get-ADGroupMember -identity "Groupname" | Select-Object name
Foreach ($i in $UL.Name)
{
    Write-Host "当前处理计算机:$i"
    Get-AdComputer -Identity "$i" -Properties description | Select-Object name, description
}

额外优化建议

  1. 不需要$i.ToString(),$UL.Name本身就是字符串类型
  2. -Properties *会获取所有属性,效率较低,直接指定需要的description属性能提升执行速度
  3. 如果AD组里可能包含非计算机对象(比如用户、其他组),可以先过滤出计算机类型的成员,避免不必要的报错:
$UL = Get-ADGroupMember -identity "Groupname" | Where-Object {$_.objectClass -eq "computer"} | Select-Object name
Foreach ($i in $UL.Name)
{
    Write-Host "当前处理计算机:$i"
    Get-AdComputer -Identity "$i" -Properties description | Select-Object name, description
}

高效批量查询方案

如果想进一步提升效率,可以用-Filter参数一次性查询所有目标计算机,减少多次调用AD服务的开销:

$computerNames = (Get-ADGroupMember -identity "Groupname" | Where-Object {$_.objectClass -eq "computer"}).Name
$filter = "Name -in @('$($computerNames -join "','")')"
Get-AdComputer -Filter $filter -Properties description | Select-Object name, description

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:25:19