powershell之从 Confluence 页面获取限制

JustinYoung 阅读:278 2025-06-02 22:19:02 评论:0

我对 Web API 调用不是很精通,但我一直在使用以下 powershell 代码(本示例中的这个站点是我发现有一些公共(public)数据的站点...我的站点是内部的,需要我通过凭证,它一直在为我工作而没有问题):

If(-not (Get-InstalledModule -Name 'ConfluencePS')){Install-Module ConfluencePS} 
Import-Module ConfluencePS 
 
Set-ConfluenceInfo -BaseUri "https://wiki.opnfv.org" 
 
$space = Get-confluencepage -Spacekey ds 
 
ForEach($item in $space) 
{ 
    $splatParams = @{ 
                        Uri = "https://wiki.opnfv.org/rest/api/content/$($item.ID)/restriction" 
                        ContentType = 'application/json' 
                        method = 'GET' 
                    } 
    #reference https://developer.atlassian.com/cloud/confluence/rest/#api-api-content-id-restriction-get 
    Invoke-RestMethod @splatParams 
} 

documentation ConfluencePS 表明限制仍然是一个开放的功能请求,但我需要让它为一个项目工作。

我在 ConfluencePS.psm1 的第 982 行设置了一个断点,并且能够看到各种调用以及参数的结构,但是当我尝试模仿它时(并根据 confluence documentation 更改 URI)我收到错误“HTTP 错误 405 - MethodNotAllowed”。有人对我如何使这项工作有建议吗?我正在尝试返回应用于特定空间中所有页面的权限。

请您参考如下方法:

通过内容 ID 获取限制

你自己发现,需要加上“byOperation”。

我能够使用以下代码获取特定页面的限制:

# for testing purposes ONLY, I've specified the URL and ID 
$wikiUrl = "https://wiki.opnfv.org" 
$itemId = "6820746" 
 
$splatParams = @{ 
                    Uri = "$wikiUrl/rest/api/content/$itemId/restriction/byOperation" 
                    ContentType = 'application/json' 
                    method = 'GET' 
                } 
$result = Invoke-RestMethod @splatParams 

在版本 6.0.4 和 6.15.9 上测试

按用户名过滤

如果您想通过特定用户名过滤结果,您可以使用以下 URI: "$wikiUrl/rest/api/content/$itemId/restriction/byOperation/.../user?userName=".

顺便说一下,这种操作方式存在一个 Unresolved 错误: restriction returns ambiguous responses


标签:Shell
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号