Powershell VSTS个人访问令牌(PAT)与OAUTH:不同的查询结果

Powershell VSTS个人访问令牌(PAT)与OAUTH:不同的查询结果,powershell,oauth,azure-devops,azure-pipelines-release-pipeline,tfvc,Powershell,Oauth,Azure Devops,Azure Pipelines Release Pipeline,Tfvc,我正在使用PowerShell任务来查询TFVC存储库在某个时间点之后的更改。为了在本地开发,我创建了一个与我的用户相关的PAT。在发布定义中,我启用了允许脚本访问OAUTH令牌。如果我现在分别使用PAT和OAUTH执行发布定义,我会得到不同的现有更改结果(例如,PAT的计数为1,OAUTH的计数为0)。查询完全相同: https://xxx.visualstudio.com/xxx/_apis/tfvc/changesets?searchCriteria.itemPath=$projectPa

我正在使用PowerShell任务来查询TFVC存储库在某个时间点之后的更改。为了在本地开发,我创建了一个与我的用户相关的PAT。在发布定义中,我启用了
允许脚本访问OAUTH令牌
。如果我现在分别使用PAT和OAUTH执行发布定义,我会得到不同的现有更改结果(例如,PAT的计数为1,OAUTH的计数为0)。查询完全相同:

https://xxx.visualstudio.com/xxx/_apis/tfvc/changesets?searchCriteria.itemPath=$projectPath&searchCriteria.fromDate=$cloudVersionTimestampUTC&api版本=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)"
}
有人知道为什么会这样吗

谢谢

编辑: 以下是
项目集合生成服务(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调用并检索相同数量的变更集。

项目集合生成服务(Xxx)帐户对该路径的权限是多少?@starianchen MSFT:感谢您的回复。请查看编辑。如果您尝试使用新的版本定义,结果如何?你能在OneDrive上共享详细日志吗?(将system.debug设置为true)