1

我試圖從我們的Atlassian Confluence/Jira實例中提取用戶列表。然而,我正在努力尋找關於哪些REST服務可用的良好文檔,並且似乎SOAP服務已被棄用。從Atlassian的Cloud/On-Demand服務獲取用戶列表

下面的代碼不會得到結果,但我們有超過100個用戶,而這個返回0

if(-not ($credentials)) { #put this here so I can rerun the same script in the same IDE session without having to reinput credentials each time 
    $credentials = get-credential 'myAtlassianUsername' 
} 
$tenant = 'myCompany' 
invoke-restmethod -Method Get -Uri ('https://{0}.atlassian.net/rest/api/2/groupuserpicker?query=users' -f $tenant) -Credential $credentials | ConvertTo-Json -Depth 5 

(該ConvertTo-Json只是爲了更簡單地查看擴展的結果集)。

{ 
    "users": { 
        "users": [ 

          ], 
        "total": 0, 
        "header": "Showing 0 of 0 matching users" 
       }, 
    "groups": { 
        "header": "Showing 2 of 2 matching groups", 
        "total": 2, 
        "groups": [ 
            { 
             "name": "confluence-users", 
             "html": "confluence-\u003cb\u003eusers\u003c/b\u003e", 
             "labels": [ 

               ] 
            }, 
            { 
             "name": "jira-users", 
             "html": "jira-\u003cb\u003eusers\u003c/b\u003e", 
             "labels": [ 

               ] 
            } 
           ] 
       } 
} 

我想結果試圖給我的JIRA和Confluence用戶API的URL;但我無法弄清楚這些相對URL如何映射到根URL(我嘗試在URL中的各個位置添加,所有這些都給了我一個404dead link錯誤)。

+1

根據Atlassian的(對於合流): XML-RPC和SOAP API的自V5.5棄用,但: XML-RPC不會被刪除,直到有足夠的覆蓋率匯合REST API,我們不贊成使用XML-RPC來指示應儘可能使用新代碼來使用rest api。您仍然可以在REST API逐步開發的同時使用RPC。 但是,列出所有用戶的調用在SOAP或REST API中不可用。在我們這邊,我們開發了自己的插件來公開這個函數。 – mtheriault

回答

1

查詢以下調用中的參數是名稱或電子郵件地址上的搜索查詢。 參考:https://docs.atlassian.com/jira/REST/cloud/#api/2/groupuserpicker

您可以使用maxResults參數來獲得超過50個結果。

不幸的是,這個REST API調用不會在一次調用中爲您提供所有用戶。

,我知道有吉拉做才能得到所有用戶的唯一途徑是通過啓動信打一個電話,(遍歷每個字母):

GET .../rest/api/2/user/search?username=a&maxResults=1000 
GET .../rest/api/2/user/search?username=b&maxResults=1000 
GET .../rest/api/2/user/search?username=c&maxResults=1000 
... 

參考:https://docs.atlassian.com/jira/REST/cloud/#api/2/user-findUsers

示例代碼

function Get-AtlassianCloudUsers { 
    [CmdletBinding()] 
    param (
     [Parameter(Mandatory)][string]$Tenant 
     , 
     [Parameter(Mandatory)][System.Management.Automation.Credential()]$Credential 
     , 
     [Parameter(Mandatory=$false)][string]$UserFilter = '%' 
     , 
     [Parameter(Mandatory=$false)][int]$MaxResults = 9999 
    ) 
    process { 
     #refer to http://stackoverflow.com/questions/40424377/get-a-list-of-users-from-atlassians-cloud-on-demand-service for additional notes 
     [string]$uri = 'https://{0}.atlassian.net/rest/api/2/user/search?username={1}&maxResults={2}' -f $Tenant, $UserFilter, $MaxResults 
     Invoke-RestMethod -Method Get -Uri $Uri -Credential $credential | select -Expand syncRoot | Select-Object name, displayName, active, self 
     #| ConvertTo-Json -Depth 5 
    } 
} 

Get-AtlassianCloudUsers -Tenant 'MyCompany' -credential (Get-Credential 'MyUsername') | ft -AutoSize 
+0

完美;謝謝你@mtheriault。注意:在查詢字符串中使用'startAt'參數我可以設置分頁以避免擔心'maxResults'值的適當限制。 – JohnLBevan

+1

此外,我在這裏找到了答案,指出可以使用通配符'%'代替用戶名的首字母以獲得所有結果:https://answers.atlassian.com/questions/9396305/answers/39428244 – JohnLBevan

0

作爲備選答案,我最近發現了PSJira項目在GitHub上:https://github.com/replicaJunction/PSJira

這個庫爲JIRA服務提供了一套很好的包裝函數,似乎有很好的文檔記錄和維護。

爲了實現上述要求,按照下面的步驟:

安裝軟件包:

配置PSJira:

  • Set-JiraConfigServer -Server "https://$Tenant.atlassian.net"(分配$Tenant到您的實例的名稱)

使用:

  • 您吉拉/ Atlassian的帳戶創建一個證書:$cred = get-credential $JiraUsername
  • 用戶獲取列表:Get-JiraUser -UserName '%' -IncludeInactive -Credential $cred | select Name, DisplayName, Active, EmailAddress
相關問題