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

如何在PowerShell中提取AD组成员的纯SamAccountName值

解决PowerShell中AD组成员SamAccountName提取纯字符串的问题

这是因为你用Select SamAccountName得到的是包含单个属性的自定义对象数组,不是纯字符串数组,所以直接索引得到的是对象而非属性值。给你几个可行的解决办法:

方法1:修改原命令直接得到字符串数组(推荐)

用-ExpandProperty参数直接提取属性值,这样$users就是纯字符串的数组,后续索引直接拿到用户名:

$users = Get-ADGroupMember -Identity 'AD-Group-XYZ' -Recursive | Select-Object -ExpandProperty SamAccountName

现在执行$users[0]就会直接输出usernameX了。

方法2:从已有的对象数组中提取属性值

如果已经执行了原命令生成了$users对象数组,直接访问对象的SamAccountName属性即可:

$users[0].SamAccountName

这是最直接的方式,因为每个对象本身就包含这个属性,之前试的.ToString()、.text都不对——对象的默认ToString()会返回对象的表示形式(比如@{SamAccountName=usernameX}),而.text根本不是这个对象的属性。

方法3:用ForEach-Object提取属性

另一种等价的写法是通过管道遍历每个对象,直接取出属性值:

$users = Get-ADGroupMember -Identity 'AD-Group-XYZ' -Recursive | ForEach-Object { $_.SamAccountName }

同样会得到纯字符串数组,效果和方法1一致。

补充说明

为什么原命令会返回对象?Select-Object SamAccountName(简写Select SamAccountName)的作用是创建只包含指定属性的新对象,而不是直接提取属性值。只有加上-ExpandProperty,才会把属性的值“展开”成数组元素,而不是把对象作为数组元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:26:09