我在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中运行它,效果很好。
错误是由用于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不是变量,您的请求应该可以正常工作。