powershell Confluence REST API内容未使用“Invoke-RestMethod”返回结果,但结果可通过Web浏览器查看

jfewjypa  于 2023-04-12  发布在  Shell
关注(0)|答案(1)|浏览(117)

我有一个Confluence站点,我想通过Confluence REST API获取有关页面的信息。我使用CQL querycql=type=page and space=SpaceName,所以我的URI是:

https://<confluence server>/confluence/rest/api/content/search?cql=type=page+and+space=SpaceName

我可以从Web浏览器登录Confluence,然后导航到上面的URL,我可以看到JSON格式的所有内容。
然而,当我使用完全相同的凭据和完全相同的URI运行Invoke-RestMethod时,它成功了,但有0个结果:

PS > $uri = "https://<confluence server>/confluence/rest/api/content/search?cql=type=page+and+space=SpaceName"
PS > Invoke-RestMethod -Uri $uri -Credential $credential -Method Get

results        : {}
start          : 0
limit          : 25
size           : 0
cqlQuery       : type=page and space=SpaceName
searchDuration : 20
totalSize      : 0
_links         : @{self=https://<confluence server>/confluence/rest/api/content/search?cql=type=page+and+space=SpaceName; base=https://<confluence server>/confluence; context=/confluence}

我还将输出传递给了一个变量($results)并检查了results属性;它是空的:

PS > $results = Invoke-RestMethod -Uri $uri -Credential $credential -Method Get
PS > [string]::IsNullOrEmpty($results)
True

我不知道这个问题是否与Confluence服务器不正确,我的凭据,或Invoke-RestMethod。有没有可能,Confluence服务器可以允许查询/提供不同的结果通过Web浏览器,但不知何故不通过PowerShell?
有人知道这是怎么回事吗?

2izufjch

2izufjch1#

让它工作。我使用-Credential参数与PSCredential(这在过去的Bitbucket,Confiforms,Jira等中对我有效)。当我切换到基本身份验证的-Headers参数时,它开始按预期工作:

PS > $uri = "https://<confluence server>/confluence/rest/api/content/search?cql=type=page+and+space=SpaceName"
PS > $Headers = @{
    Authorization = "Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("username:password"))
}
PS > Invoke-RestMethod -Uri $uri -Headers $Headers -Method Get

results        : {@{id=514598038; type=page; status=current; title=page-title | 20230126-093349 | b05f41c; restrictions=; _links=; _expandable=}, @{id=514428061; type=page; status=current;...}
start          : 0
limit          : 25
size           : 25
cqlQuery       : type=page and space=SpaceName
searchDuration : 36
totalSize      : 6642
_links         : @{self=https://<confluence server>/confluence/rest/api/content/search?cql=type=page+and+space=SpaceName; next=/rest/api/content/search?limit=25&start=25&cql=type=page+and+space=SpaceName; base=https://<confluence server>/confluence; context=/confluence}

不知何故,Invoke-RestMethod没有正确地通过-Credential参数传递PSCredential凭证。

相关问题