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

PowerShell中-join拼接MgGraph应用所有者仅返回首项问题

问题原因

代码存在两个核心问题导致拼接逻辑失效:

  • 调用Get-MgApplicationOwner时携带了-Top 1参数,该参数会限制接口仅返回1条所有者记录,根本没有拉取到全量所有者列表
  • 未配置全量拉取参数,即使写了-join逻辑,也没有多个元素可供拼接
快速修复方案

直接替换原有逻辑即可,核心修改点见代码注释:

Connect-MgGraph -Scopes 'Application.Read.All'
$results = @()
Get-MgApplication -filter "AppID eq 'xyzxyzxyzxyz'" | % {
    $app = $_
    # 移除-Top 1参数,添加-All拉取该应用下所有所有者,变量名改为复数更符合语义
    $owners = Get-MgApplicationOwner -ApplicationId $_.ID -All
    $app.PasswordCredentials | %{ 
        $results += [PSCustomObject] @{
            DisplayName = $app.DisplayName; 
            AppID = $app.AppID;
            CredentialType = "PasswordCredentials";
            ExpiryDate = $_.EndDateTime;
            Type = 'NA';
            # 遍历所有所有者对象提取UPN后,再执行逗号拼接
            Owners = ($owners | ForEach-Object { $_.AdditionalProperties.userPrincipalName }) -join ', ';
        }
    }   
}
$results
补充说明

如果你使用的是较新版本的Microsoft Graph PowerShell模块,也可以直接将Owners行简写为Owners = ($owners.AdditionalProperties.userPrincipalName) -join ', ',PowerShell的属性枚举特性会自动批量提取集合内每个元素的对应属性值;显式写ForEach-Object的写法兼容性更强,不会出现低版本模块取值异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:57:17