如何将Get-ADComputer结果存为字符串数组并获取机器名称值
关于Get-ADComputer的输出格式与字符串数组转换问题
1. Get-ADComputer的输出格式是什么?
Get-ADComputer默认返回的是ADComputer类型的对象集合,每个对象包含Active Directory中计算机账户的各类属性(比如Name、DNSHostName、SamAccountName等)。当你直接把这些对象赋值给[string[]]数组时,PowerShell会自动将每个对象转换为字符串形式,而ADComputer对象的默认字符串表示就是@{属性名=属性值}这种哈希格式——这就是你看到@{Name=some-machine-name-123-here}的原因。
2. 如何将结果保存为字符串数组并获取纯名称值?
要得到只包含计算机名称的字符串数组,你需要明确提取Name属性的值,而不是直接保留整个对象。这里有两种常用且可靠的方法:
方法一:使用Select-Object -ExpandProperty
这个参数会直接提取指定属性的原始值,而非返回包含该属性的对象:
[string[]]$server_list = Get-ADComputer -Filter * -Property Name | Select-Object -ExpandProperty Name
方法二:使用ForEach-Object遍历提取属性
这种方式更直观,逐个遍历每个ADComputer对象并取出Name属性:
[string[]]$server_list = Get-ADComputer -Filter * -Property Name | ForEach-Object { $_.Name }
验证效果
执行上面任意一种方法后,再运行你的foreach循环:
foreach ($machine_name in $server_list) { "processing : $machine_name" }
输出就会变成你想要的纯名称格式:
processing : some-machine-name-123-here
内容的提问来源于stack exchange,提问作者bitshift
相关产品推荐
相关产品推荐

