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

使用PowerShell获取SharePoint用户所属组并优化显示

SharePoint用户所属组拆分显示及Out-GridView适配方案

问题分析

原命令中$_.Groups返回SPGroup集合,PowerShell默认将集合压缩为{group1, group2...}格式,无法每行展示单个组;同时Out-GridView因集合类型无法完整显示组信息。以下是针对性解决方案:

方案1:控制台实现合并UserLogin列的期望显示效果

通过遍历用户及所属组,生成自定义对象,仅在首个组对应的行显示UserLogin,后续组行留空:

$targetUsers = Get-SPUser -Web https://contonso.com -Limit all | Where-Object {$_.UserLogin -like "*tom"}
foreach ($user in $targetUsers) {
    $isFirstGroup = $true
    foreach ($group in $user.Groups) {
        [PSCustomObject]@{
            UserLogin = if ($isFirstGroup) { $user.UserLogin } else { "" }
            Groups    = $group.Name
        }
        $isFirstGroup = $false
    }
} | Format-Table -AutoSize

执行后控制台显示效果:

UserLogin        Groups
---------        ------
i:0#.w|xyx\om   group1
                 group2
                 group3
                 group4

方案2:适配Out-GridView的完整显示方案

为了在Out-GridView中方便筛选、查看,每个组行保留UserLogin信息(避免空值影响操作):

Get-SPUser -Web https://contonso.com -Limit all | Where-Object {$_.UserLogin -like "*tom"} | ForEach-Object {
    $currentUser = $_
    $_.Groups | ForEach-Object {
        [PSCustomObject]@{
            UserLogin = $currentUser.UserLogin
            GroupName = $_.Name
        }
    }
} | Out-GridView -Title "目标用户的SharePoint所属组"

该命令会生成每行对应一个用户-组关联的对象,Out-GridView可完整显示所有组名,支持排序、筛选操作。

核心原理

通过嵌套遍历将用户与所属组的一对多关系拆分为多个一对一的自定义对象,替代原命令中集合类型的Groups列,从根本解决PowerShell对集合的压缩显示问题,同时适配Out-GridView的对象展示要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:35:19