powershell - VSTS Personal Access Token (PAT) vs OAUTH:不同的查询结果
问题描述
我正在使用 PowerShell 任务在某个时间点后查询 TFVC 存储库以进行更改。为了在本地开发,我创建了一个与我的用户相关的 PAT。在我启用的发布定义Allow scripts to access OAUTH token
中。如果我现在使用 PAT 分别执行 OAUTH 的发布定义,我会得到现有更改的不同结果(例如,对于 PAT,计数为 1,对于 OAUTH,计数为 0)。查询完全相同:
https://xxx.visualstudio.com/xxx/_apis/tfvc/changesets?searchCriteria.itemPath=$projectPath&searchCriteria.fromDate=$cloudVersionTimestampUTC&api-version=4.1
这里是执行查询的代码:
Write-Host "Get Request with the URI '$uri'"
if ($localDevelopment) {
$GetResponse = Invoke-RestMethod `
-Uri $uri `
-Headers @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($env:SYSTEM_ACCESSTOKEN)")) }
Write-Host "Requested last changes for local development: $($GetResponse | ConvertTo-Json -Depth 100)"
}
else {
$GetResponse = Invoke-RestMethod `
-Uri $uri `
-Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
Write-Host "Requested last changes: $($GetResponse | ConvertTo-Json -Depth 100)"
}
有人知道为什么会这样吗?
谢谢
Project Collection Build Service (xxx)
编辑:这里是帐户
的权限:
同样重要的是要提到我们不使用托管代理,而是使用自定义代理。
解决方案
问题是比较 PAT 和 OAUTH 时对时间戳的不同处理。如您所见,我将变量$cloudVersionTimestampUTC
用于fromDate
. 当我设置时间戳时,我没有添加Z
(比如MM-dd-yyyy HH:mm:ss
代替MM-dd-yyyy HH:mm:ssZ
)。PAT 使用给定的时间戳作为 UTC,OAUTH 在未提供时将其解释为本地时间(但我不确定是什么 - 例如默认配置文件)Z
。这当然会导致不同数量的变更集(如果缺少的变更集在 UTC 和本地时间之间的差异中)。
最后,我必须明确时间戳。所以我所做的是将时间戳作为字符串存储为 Azure 资源中的标记,然后执行以下操作:
$cloudVersionTimestampUTC = [DateTime]($cloudJobDefinition.Tags.'version-timestamp')
$cloudVersionTimestampUTC = (Get-Date -Date $cloudVersionTimestampUTC).ToString("MM-dd-yyyy HH:mm:ssZ")
然后我能够进行 REST 调用并检索相同数量的变更集。
推荐阅读
- apache-kafka - 自动提交 false 中的 Kafka 消费者在确认 asyc 调用“KafkaConsumer 对于多线程访问不安全”时抛出异常
- angular - Angular NgRx - 仅在第一次调用时继续轮询服务的效果
- reactjs - 我错过了什么?使用 axios 执行删除请求,使用 mongodb 作为 bakcend 使用 req.params.id 进行故障排除
- python - 如何在具有特定条件的熊猫数据框中添加随机值
- mysql - 如何在父查询中使用子查询给子查询另一个条件?
- javascript - Vue DevTools 可以检测到 Vue.js 但未显示在 F12 面板中
- c# - 在服务器上发布后运行但在本地计算机上工作正常时在 mvc 5 中加载视图时出现异常
- debian - 升级到debian buster,用户无法在XFCE中挂载USB存储
- javascript - 集成 Google 搜索框(不是自定义搜索引擎)
- sugarcrm - suitecrm 是否像 sugarcrm 一样验证文件上传?