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

如何将AD计算机名称传入数组?Set-ADComputer执行失败求助

问题根源与解决方案

你的问题核心出在获取服务器列表时使用了ft -HideTableHeaders这个命令——它会把原本的ADComputer对象转换成格式化表格对象,而不是你需要的服务器名称字符串或ADComputer对象,这直接导致Set-ADComputer无法识别输入的身份参数。

修正步骤:

1. 正确获取服务器列表

你有两种更合适的方式获取服务器数据,根据需求选择:

方式一:获取纯服务器名称数组(适合只需要名称的场景)
# 获取所有Windows Server类别的计算机名称数组
$servers = Get-ADComputer -Filter {OperatingSystem -like "Windows Server*"} | Select-Object -ExpandProperty Name
方式二:保留完整ADComputer对象(推荐,减少AD查询次数)
# 获取完整的ADComputer对象数组,后续Set-ADComputer可直接使用对象
$servers = Get-ADComputer -Filter {OperatingSystem -like "Windows Server*"}

2. 执行Set-ADComputer操作

不管用哪种方式,后续的循环操作都能正常运行。举个设置计算机描述的示例:

# 遍历服务器列表执行操作
foreach ($server in $servers) {
    # 这里替换成你实际需要的Set-ADComputer参数
    Set-ADComputer -Identity $server -Description "Managed by $gateway"
}

为什么原来的代码会失败?

ft(即Format-Table)的作用是把数据转换成适合显示的格式化输出,它返回的是Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData类型的对象,而Set-ADComputer的-Identity参数只接受ADComputer对象、SID、GUID或计算机名称字符串,自然无法识别这些格式化对象。

你可以用以下命令验证变量类型,排查这类问题:

# 查看$servers的类型
$servers.GetType()
# 查看$servers包含的对象成员
$servers | Get-Member

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:54:02