我可以使用 Microsoft Graph API 在我属于 MS Teams 的所有 teams/groups 中搜索文件吗

Can I search for a file through all the teams/groups I belong to on MS Teams using the Microsoft Graph API

我一直在使用以下 API,我建议使用 TEAM_ID/GROUP_ID 进行搜索

https://graph.microsoft.com/v1.0/groups/GROUP_ID/drive/root/search(q='SEARCH_VALUE')

我宁愿在没有组 ID 的情况下搜索我所属的所有组来搜索 Teams Drive 中的内容。任何线索将不胜感激。

O365 组是 Microsoft 云世界中许多事物的基础,团队是 office 365 组的附加组件,Sharepoint(主要存储团队文件的地方)也是如此

我不相信有一个图形查询可以 return 您有权访问的所有驱动器文件。您必须构建 2 个查询,一个查询您所属的组,然后循环遍历它以对每个组执行搜索查询。获取您所属群组的所有群组 ID 是 /getMemberGroups https://docs.microsoft.com/en-us/graph/api/user-getmembergroups?view=graph-rest-1.0&tabs=http

您可能可以使用 powershell 或一个简单的程序或任何可以调用图形的语言来完成。

group_id 为必填项,见here

您可以尝试使用 Powershell 获取您想要的组,然后循环请求 MS Graph API。

#sign in your azure account
Connect-AzureAD

#get access token
function Get-AzureRMBearerToken
{
    [CmdletBinding()]
    Param
    (
        $TenantID,

        $AppID,

        $ClientSecret
    )

    $Result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenantID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://graph.microsoft.com/"; "client_id" = "$AppID"; "client_secret" = "$ClientSecret" }
    $Authorization = "{0} {1}" -f ($result.token_type , $result.access_token)
    $Authorization
}
$accessToken = Get-AzureRMBearerToken  -TenantID "{your tenant id}" -AppID "{application/client id}" -ClientSecret "{value in your client secret}"

#get all groups
$groups = Get-AzureADGroup -All

#request MS Graph API in the loop
Foreach($group in $groups){
    $url = "https://graph.microsoft.com/v1.0/groups/"+$group.ObjectId+"/drive/root/search(q='SEARCH_VALUE')"
    Invoke-RestMethod -Method Get -Uri $url -Headers @{ Authorization = $accessToken }
} 

注意:确保您的应用程序具有所需的权限。参考here and here.

我通过使用 Search Drive Items 找到了解决方案,该项目目前在 Graph API 的 Beta 版中可用。它从您在 azure 租户下有权访问的所有团队驱动器和 Sharepoint 驱动器中详细搜索文件列表。