简体   繁体   English

使用 Powershell 的 Azure Devops 审计 rest api 延续令牌

[英]Azure Devops audit rest api continuation token using powershell

I am working on script which should output audit logs report in csv file for selected fields.我正在编写脚本,该脚本应该在 csv 文件中为所选字段输出审计日志报告。 Due to rest api result limitation I can not get all data at once.由于 rest api 结果限制,我无法一次获取所有数据。 If I pass continuation token manually I can get next set of data but I want script to generate all logs for given time frame如果我手动传递继续令牌,我可以获得下一组数据,但我希望脚本生成给定时间范围内的所有日志

I tried this script which does not return all data -我试过这个不返回所有数据的脚本 -

$personalAccessToken = ""
$auth = [Convert]::ToBase64String([Text.Encoding]::                  
ASCII.GetBytes(":$($personalAccessToken)"))

$headers = @{}
$headers.Add("Authorization", "Basic $auth")


do
{
$uri = "https://auditservice.dev.azure.com/{org}/_apis/audit/auditlog?      
startTime=2020-07-01T00.00.00&endTime=2020-10-   
15T16.00.00&continuationToken=$continuationToken&api-version=6.0-
preview.1"

$TestRuns = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get    
| Select-Object -ExpandProperty decoratedAuditLogEntries | 
Where-Object { $_.actionId -eq 'Git.RepositoryCreated' } |
Select-Object actorDisplayName, ProjectName, actionId, details, 
timestamp  
$continuationToken = $TestRuns.Headers.'x-ms-continuationtoken'

$TestRuns
}
while ($continuationToken -ne $null)

I also tried with Invoke-webrequest it also does not provide all data.我也尝试过使用 Invoke-webrequest 它也不提供所有数据。 I have large chuck of logs.我有一大堆原木。

How can I get all the data ?我怎样才能得到所有的数据?

Here is the solution which worked for me -这是对我有用的解决方案 -

$personalAccessToken = ""
$auth =  
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes
(":$($personalAccessToken)"))

$headers = @{}
$headers.Add("Authorization", "Basic $auth")

do
{
$uri =     
"https://auditservice.dev.azure.com/{organization}/_apis/audit/auditlog?  
startTime=2020-09-20T20:42:20:3094806Z&endTime=2020-10-
15T20:42:20:3094806Z&continuationToken=$continuationToken&api-version=6.0-
preview.1"

$TestRuns = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get 

$result = @( $TestRuns | Select-Object -ExpandProperty     
decoratedAuditLogEntries | 
Where-Object { $_.actionId -eq 'Git.RepositoryCreated' } |
Select-Object actorDisplayName, ProjectName, actionId, details, 
timestamp )

$continuationToken = $TestRuns.continuationToken 

$result | Export-Csv "/data.csv" -Append
}

while ($null -ne $continuationToken)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Azure DevOps Rest Api 获取所有带有延续令牌的项目 - Azure DevOps Rest Api to get all projects with continuation token Azure devops rest api 结果使用 powershell 脚本循环 - Azure devops rest api result looping using powershell script 在PowerShell中使用Azure DevOps REST API更新内部版本定义 - Update build definition using Azure DevOps REST API in PowerShell 使用 powershell 从 azure DevOps UI 下载 csv 中的审计日志 - Download audit logs in csv from azure DevOps UI using powershell 如何使用 Devops REST API 搜索带有 Powershell 的 Azure Devops 代码存储库并输出到 CSV - How to search Azure Devops Code Repos w/ Powershell using Devops REST API and output to CSV 如何使用 PowerShell 从 Azure CloudShell 访问 Azure DevOps REST API? - How to access Azure DevOps REST API from Azure CloudShell using PowerShell? 根据Azure DevOps Rest API对Azure Pipelines Powershell任务进行身份验证 - Authenticate Azure Pipelines Powershell task against Azure DevOps Rest API 如何使用 powershell(Azure devops REST API)获取用户提交更改的 Azure devops git repo 文件夹名称 - How to get Azure devops git repo folder name where user committed changes using powershell (Azure devops REST API) 令牌认证(而不是 PAT 令牌)到 Azure DevOps REST API 通过 Azure DevOps 管道 - Token authentication (instead of PAT token) to Azure DevOps REST API via Azure DevOps Pipeline Azure DevOps 使用 REST API 调用 GetItem - Azure DevOps calling GetItem using REST API
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM