命名空间:microsoft.graph
重要
Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
检索有关云电脑使用情况的相关 报告 ,包括用户用于登录云电脑设备的客户端应用程序。
适用于 Windows 的远程桌面客户端独立安装程序 (MSI) 将于 2026 年 3 月 27 日终止支持。 在此之前,IT 管理员应将用户迁移到Windows App,以确保通过Azure虚拟桌面、Windows 365和Microsoft Dev Box 继续访问远程资源。
详细了解 如何准备适用于 Windows 的远程桌面客户端终止支持。
此 API 使 IT 管理员能够通过确认用户是否仍在使用旧版远程桌面客户端并确定其上次登录日期来检查迁移状态,从而帮助监视进度并确保符合迁移要求。
此 API 可用于以下国家级云部署。
| 全局服务 |
美国政府 L4 |
美国政府 L5 (DOD) |
由世纪互联运营的中国 |
| ✅ |
✅ |
✅ |
❌ |
权限
为此 API 选择标记为最低特权的权限。
只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考。
| 权限类型 |
最低特权权限 |
更高特权权限 |
| 委派(工作或学校帐户) |
CloudPC.ReadWrite.All |
不可用。 |
| 委派(个人 Microsoft 帐户) |
不支持。 |
不支持。 |
| 应用程序 |
CloudPC.ReadWrite.All |
不可用。 |
HTTP 请求
POST /deviceManagement/virtualEndpoint/report/retrieveCloudPcClientAppUsageReport
| 名称 |
说明 |
| Authorization |
持有者 {token}。 必填。 详细了解 身份验证和授权。 |
| Content-Type |
application/json. 必需。 |
请求正文
在请求正文中,提供参数的 JSON 表示形式。
下表显示了可用于此方法的参数。
| 参数 |
类型 |
说明 |
| filter |
String |
OData $filter 语法。 支持的筛选器包括:and、、or、lt、legt、 ge和 eq。 可选。 |
| groupBy |
字符串集合 |
指定如何对报表进行分组。 如果使用,则必须具有与 select 参数相同的内容。 可选。 |
| orderBy |
字符串集合 |
指定如何对报表进行排序。 可选。 |
| reportType |
cloudPcClientAppUsageReportType |
报表类型。 支持的值为 microsoftRemoteDesktopClientUsageReport。 必填。 |
| search |
String |
指定要搜索的字符串。 可选。 |
| select |
字符串集合 |
OData $select 语法。 报表的选定列。 可选。 |
| skip |
Int32 |
要跳过的记录数。 可选。 |
| top |
Int32 |
要返回的排名靠前的记录数。 可选。 |
响应
如果成功,此方法在200 OK响应正文中返回响应代码和Stream 对象。
下表说明了响应中的架构。
| 列 |
类型 |
说明 |
| UPN |
String |
用户主体名称。 |
| LastSignOn |
String |
用户上次使用旧式远程桌面客户端登录的日期。 格式为 YYYY-MM-DD,始终采用 UTC 时间。 |
| DaysWithUsage |
String |
用户在过去 28 天内通过旧式远程桌面客户端登录的总天数(使用 UTC 时间计算)。 |
示例
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/beta/deviceManagement/virtualEndpoint/report/retrieveCloudPcClientAppUsageReport
Content-Type: application/json
{
"filter": "",
"reportType":"microsoftRemoteDesktopClientUsageReport",
"select": ["UPN", "LastSignOn", "DaysWithUsage"],
"search": "",
"skip": 0,
"top": 50
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.DeviceManagement.VirtualEndpoint.Report.RetrieveCloudPcClientAppUsageReport;
using Microsoft.Graph.Beta.Models;
var requestBody = new RetrieveCloudPcClientAppUsageReportPostRequestBody
{
Filter = "",
ReportType = CloudPcClientAppUsageReportType.MicrosoftRemoteDesktopClientUsageReport,
Select = new List<string>
{
"UPN",
"LastSignOn",
"DaysWithUsage",
},
Search = "",
Skip = 0,
Top = 50,
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.DeviceManagement.VirtualEndpoint.Report.RetrieveCloudPcClientAppUsageReport.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphdevicemanagement "github.com/microsoftgraph/msgraph-beta-sdk-go/devicemanagement"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphdevicemanagement.NewRetrieveCloudPcClientAppUsageReportPostRequestBody()
filter := ""
requestBody.SetFilter(&filter)
reportType := graphmodels.MICROSOFTREMOTEDESKTOPCLIENTUSAGEREPORT_CLOUDPCCLIENTAPPUSAGEREPORTTYPE
requestBody.SetReportType(&reportType)
select := []string {
"UPN",
"LastSignOn",
"DaysWithUsage",
}
requestBody.SetSelect(select)
search := ""
requestBody.SetSearch(&search)
skip := int32(0)
requestBody.SetSkip(&skip)
top := int32(50)
requestBody.SetTop(&top)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.DeviceManagement().VirtualEndpoint().Report().RetrieveCloudPcClientAppUsageReport().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.devicemanagement.virtualendpoint.report.retrievecloudpcclientappusagereport.RetrieveCloudPcClientAppUsageReportPostRequestBody retrieveCloudPcClientAppUsageReportPostRequestBody = new com.microsoft.graph.beta.devicemanagement.virtualendpoint.report.retrievecloudpcclientappusagereport.RetrieveCloudPcClientAppUsageReportPostRequestBody();
retrieveCloudPcClientAppUsageReportPostRequestBody.setFilter("");
retrieveCloudPcClientAppUsageReportPostRequestBody.setReportType(CloudPcClientAppUsageReportType.MicrosoftRemoteDesktopClientUsageReport);
LinkedList<String> select = new LinkedList<String>();
select.add("UPN");
select.add("LastSignOn");
select.add("DaysWithUsage");
retrieveCloudPcClientAppUsageReportPostRequestBody.setSelect(select);
retrieveCloudPcClientAppUsageReportPostRequestBody.setSearch("");
retrieveCloudPcClientAppUsageReportPostRequestBody.setSkip(0);
retrieveCloudPcClientAppUsageReportPostRequestBody.setTop(50);
graphClient.deviceManagement().virtualEndpoint().report().retrieveCloudPcClientAppUsageReport().post(retrieveCloudPcClientAppUsageReportPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const stream = {
filter: '',
reportType: 'microsoftRemoteDesktopClientUsageReport',
select: ['UPN', 'LastSignOn', 'DaysWithUsage'],
search: '',
skip: 0,
top: 50
};
await client.api('/deviceManagement/virtualEndpoint/report/retrieveCloudPcClientAppUsageReport')
.version('beta')
.post(stream);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\DeviceManagement\VirtualEndpoint\Report\RetrieveCloudPcClientAppUsageReport\RetrieveCloudPcClientAppUsageReportPostRequestBody;
use Microsoft\Graph\Beta\Generated\Models\CloudPcClientAppUsageReportType;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new RetrieveCloudPcClientAppUsageReportPostRequestBody();
$requestBody->setFilter('');
$requestBody->setReportType(new CloudPcClientAppUsageReportType('microsoftRemoteDesktopClientUsageReport'));
$requestBody->setSelect(['UPN', 'LastSignOn', 'DaysWithUsage', ]);
$requestBody->setSearch('');
$requestBody->setSkip(0);
$requestBody->setTop(50);
$graphServiceClient->deviceManagement()->virtualEndpoint()->report()->retrieveCloudPcClientAppUsageReport()->post($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.devicemanagement.virtualendpoint.report.retrieve_cloud_pc_client_app_usage_report.retrieve_cloud_pc_client_app_usage_report_post_request_body import RetrieveCloudPcClientAppUsageReportPostRequestBody
from msgraph_beta.generated.models.cloud_pc_client_app_usage_report_type import CloudPcClientAppUsageReportType
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = RetrieveCloudPcClientAppUsageReportPostRequestBody(
filter = "",
report_type = CloudPcClientAppUsageReportType.MicrosoftRemoteDesktopClientUsageReport,
select = [
"UPN",
"LastSignOn",
"DaysWithUsage",
],
search = "",
skip = 0,
top = 50,
)
await graph_client.device_management.virtual_endpoint.report.retrieve_cloud_pc_client_app_usage_report.post(request_body)
响应
以下示例显示了相应的响应。
注意:为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 200 OK
Content-Type: application/octet-stream
{
"TotalRowCount": 3,
"Schema": [
{
"Column": "UPN",
"PropertyType": "String"
},
{
"Column": "LastSignOn",
"PropertyType": "String"
},
{
"Column": "DaysWithUsage",
"PropertyType": "Int64"
}
],
"Values" :[
["test001@contoso.onmicrosoft.com", "2025-10-28", 10],
["test002@contoso.onmicrosoft.com", "2025-10-30", 5],
["test003@contoso.onmicrosoft.com", "2025-10-31", 19]
]
}