PowerShell导出AD指定组用户特定属性至CSV遇参数错误求助
解决Active Directory导出组用户属性的问题
嘿,你的问题出在**Get-ADGroupMember这个cmdlet根本没有-Properties参数**——它的作用只是列出组的成员,没法直接获取用户的详细属性。而且-Filter参数也不适用于它,咱们得换个思路:先拿到组成员列表,再用Get-ADUser去拉取你需要的属性。
下面是修正后的完整脚本,我给你拆解说清楚:
Import-Module ActiveDirectory # 第一步:获取SerVAdmins组的所有成员,只保留用户对象(避免组里混了其他组/计算机) $groupUsers = Get-ADGroupMember -Identity SerVAdmins | Where-Object { $_.objectClass -eq 'user' } # 第二步:遍历每个用户,拉取指定属性,然后导出为结构化CSV $groupUsers | ForEach-Object { Get-ADUser -Identity $_.SamAccountName -Properties GivenName, DisplayName, Mail, HomeDirectory } | Select-Object GivenName, DisplayName, SamAccountName, Mail, HomeDirectory | Export-Csv -Path "ServAdmins_Users.csv" -NoTypeInformation -Encoding UTF8
关键细节说明:
- 过滤用户对象:用
Where-Object { $_.objectClass -eq 'user' }确保只处理用户,不然如果组里包含其他组或者计算机,Get-ADUser会报错。 - 用
Get-ADUser拉属性:只有Get-ADUser支持-Properties参数来获取非默认属性(比如Mail、HomeDirectory这些都不是默认返回的)。 - 导出CSV而非TXT:
Export-Csv会生成结构化的表格数据,比Out-File的纯文本好用太多,后续用Excel或者其他工具打开也方便。 - 编码和类型信息:
-NoTypeInformation会去掉CSV开头的PowerShell类型注释,-Encoding UTF8避免中文或特殊字符乱码。
如果你的组里肯定只有用户,也可以简化成一行(但还是推荐保留过滤步骤,更稳妥):
Import-Module ActiveDirectory Get-ADGroupMember -Identity SerVAdmins | Where-Object { $_.objectClass -eq 'user' } | ForEach-Object { Get-ADUser $_ -Properties GivenName, DisplayName, Mail, HomeDirectory } | Select-Object GivenName, DisplayName, SamAccountName, Mail, HomeDirectory | Export-Csv "ServAdmins_Users.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者RJ96
相关产品推荐
相关产品推荐

