【发布时间】:2021-02-09 22:52:52
【问题描述】:
Powershell 新手,试图了解事物的工作原理/语法 - 在翻阅了 microsoft 文档和其他帖子后,我找不到直接的解决方案/正确的代码来获得我正在寻找的东西。
Get-Group | Select DisplayName, Members
这只是为我输出两列,所有组......以及每个组的所有成员。 (300 个邮箱——还有很多用户)
当导出为 CSV - 成员变成一个字符串,在空格之外没有任何拆分/分隔符。这会导致问题,因为我无法根据成员名称进行排序。
对于 members 列,powershell 本身的输出将如下所示:
{john doe, becky boo, bob smith...}
{ryan john, brianna nuggets, pizza pie...}
等...继续 300 个邮箱,当然导出时会显示完整的成员列表。
谁能告诉我我应该如何访问每个组的每个人的名字?例如...对于 group1 - 输出每个人的姓名。
输出:
John Doe
Becky Boo
Bob Smith
通常在其他语言中,它类似于members[0][0]会输出第一个 ArrayList、第一个元素...不知道它是如何在 powershell 中完成的,也找不到合适的文档。
要么是一个好的方向,要么是关于如何正确迭代对象列表或存储特定值的解释......所有信息都是有帮助的,因为我只是在寻找学习材料,因为我这样做是为了好玩反正。提前致谢!
编辑:
能够将所有组和成员输出到 excel - 允许我使用我选择的任何方法正确过滤它(属于 xxx 组的所有成员,或 xxx 成员所属的组。)
$results=@()
$groups = Get-group -resultsize unlimited | sort displayname
$groups | ForEach-Object {
$group=$_
$group.members | foreach-object {
$member = $_
$results += New-Object PSObject -property @{
Member = $member
GroupName = $group.DisplayName
MailboxType = $group.RecipientTypeDetails
GroupType = $group.GroupType
ManagedBy = $group.ManagedBy
}
}
}
$results | export-csv -path c:\All_Groups.csv
【问题讨论】:
标签: arrays powershell for-loop arraylist