英文:
How to filter specific details in an output Powershell
问题
我想导出所有我的AD组以及其中的成员,并以干净的列表形式呈现。
我使用了基本命令:
Get-ADGroup -Filter * -Properties * | select CN, members
这个命令几乎给了我我想要的,但成员属性还包括了每个成员的组织单位(OU)和域控制器(DC),我想知道是否可以将输出从:
CN members
-- -------
Name of The Group CN=Name of the User,OU=User Groups,OU=User,DC=DOMAIN,DC=com
更改为:
CN members
-- -------
Name of the Group User1, User2, User3
甚至保留CN=
。是否可能过滤掉每个OU和DC?抱歉,我不太了解如何在这个网站上进行格式化。
英文:
So i want to export all my AD groups and the members inside of it in a clean list.
I used the basic command :
Get-ADGroup -Filter * -Properties * | select CN,members
which almost gave me what i want but the members property also gives the OU and DC of every member, I was wondering if it is possible to change the output from
CN members
-- -------
Name of The Group CN=Name of the User,OU=User Groups,OU=User,DC=DOMAIN,DC=com
to
CN members
-- -------
Name of the Group User1, User2, User3
Or even keeping the CN=
Is it possible to filter out every OU and DC?
Sorry i don't really know how to format on this website
答案1
得分: 0
如果您需要成员的详细信息,可能需要额外调用 AD。
我建议仅检索您需要的属性,以便最小化流量。相反,
Get-ADGroup -Filter * -Properties *
我建议
Get-ADGroup -Filter * -Properties members
要迭代并获取成员的详细信息,例如 DisplayName。请注意,一些关键属性始终会被返回
Get-ADGroup -Filter * -Properties members |
Select -ExpandProperty member |% {
Get-ADUser -Id $_ -Properties "Displayname"
}
如果您想将列表导出到 CSV 或 Excel,最好将其导出为普通列表,而不是 Group、ListOfUsers。最终脚本可能如下所示
$groups = Get-ADGroup -Filter * -Properties members
foreach ($group in $groups) {
foreach($member in $members) {
$user = Get-ADUser -Id $member -Properties DisplayName
[PSCustomObject]@{
Group = $group.Name
UserName = $user.UserPrincipalName
User = $userDisplayName
}
}
}
您将获得一个列表,类似于:
Group userName User
----- -------- ----
GroupA User1@domain.com User 1
GroupA User2@domain.com User 2
GroupA User3@domain.com User 3
GroupB User1@domain.com User 1
GroupB User4@domain.com User 4
英文:
If you need details of the members, you may need additional calls to AD
I recommend to retrieve only those properties you need, so you can minimize the traffic. Instead
Get-ADGroup -Filter * -Properties *
I suggest
Get-ADGroup -Filter * -Properties members
To iterate and get the members details, for example DisplayName. Be aware that some key properties are always returned
Get-ADGroup -Filter * -Properties members |
Select -ExpandProperty member |% {
Get-ADUser -Id $_ -Properties "Displayname"
}
I you want to export the list to a csv or excel, can be better export in a plain list instead Group, ListOfUsers. The final script can be something like
$groups = Get-ADGroup -Filter * -Properties members
foreach ($group in $groups) {
foreach($member in $members) {
$user = Get-ADUser -Id $member -Properties DisplayName
[PSCustomObject]@{
Group = $group.Name
UserName = $user.UserPrincipalName
User = $userDisplayName
}
}
}
you will a list like:
Group userName User
----- -------- ----
GroupA User1@domain.com User 1
GroupA User2@domain.com User 2
GroupA User3@domain.com User 3
GroupB User1@domain.com User 1
GroupB User4@domain.com User 4
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论