Powershell,Graph API和$ select

问题描述 投票:0回答:1

我在PowerShell中大多数情况下使用MS Graph API。

我正在使用

$Uri = $null
$Uri = "https://graph.microsoft.com/v1.0/users?$select=displayName,givenName,postalCode"
$payload=$null
$payload = Invoke-RestMethod -uri $Uri  -Headers $Header -Method Get -ContentType "application/json"
$payload.value

但是,它不会更改字段选择。它不断返回默认字段,如此处所示

https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=http

我可能做错了什么?

我正在使用基于应用程序的身份验证。有效负载已返回,但无法识别$ select语句。

PowerShell没有返回错误

我在Graph Explorer中运行它,效果很好。

microsoft-graph
1个回答
0
投票

错误是由用于Uri字符串的字符串声明的类型引起的。您正在声明这样的字符串:

$Uri = "https://graph.microsoft.com/v1.0/users?$select=displayName,givenName,postalCode"

这告诉Powershell,您要评估字符串。 $是Powershell的变量标识符。在字符串中求值时,未声明的变量会自动设置为空字符串。因此,针对Graph Api执行的请求为:

https://graph.microsoft.com/v1.0/users?=displayName,givenName,postalCode

您可以通过将变量写入主机来亲自检查:

Write-Host $Uri

如果使用图形资源管理器执行此查询。它将返回没有应用过滤器的所有用户,这是您观察到的行为。您需要将声明更改为:

$Uri = 'https://graph.microsoft.com/v1.0/users?$select=displayName,givenName,postalCode'

然后,Powershell知道$ select不是变量,您的请求应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.