【发布时间】:2021-08-21 23:05:42
【问题描述】:
我正在尝试从 powershell 脚本调用 rest 方法以从 azure repo 获取 git 更改。当我一个接一个地运行整个过程时,它可以工作,但是当我尝试通过编写 powershell 脚本来运行整个脚本时,它不能按预期工作,给出空输出。谁能告诉这里可能是什么问题
$url = "https://dev.azure.com/<Org_Name>/<Project_Name>/_apis/git/repositories/<RepoID>/commits/$(Build.SourceVersion)/changes?api-version=5.1"
$userName = "Username"
$password = "<PAT>"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $userName,$password)))
$result = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $base64AuthInfo"} -Method GET
Write-Host $result
$changesFolders = $result.changes | Where-Object {$_.item.gitObjectType -eq "tree"} | Select-Object -Property{$_.item.Path}
foreach($path in $changesFolders)
{
Write-Host $path
}
Write-Host $changesFolder
【问题讨论】:
-
请edit 提出问题,并在(已清理的)minimal reproducible example 中详细说明模糊的“它不起作用”(错误消息?或意外输出?) .
-
不起作用,因为它给出了这样的空输出:@{changeCounts=; changes=System.Object[]} 但是当我在 powershell 上一一运行所有命令时,它给出了输出:@{Edit=1;添加=1} {@{item=;更改类型=编辑},@{项目=; changeType=add}} 这种行为是不是出乎意料?
-
您已经描述了您的问题,并且如上所述,它是环境问题。您的组织/企业可能正在使用安全/风险过滤工具,即网络过滤、流量分析、数据包检查、受保护的控制等。我支持的组织/企业可能会阻止/破坏任何使用编码的东西,因为这是黑客做了什么来尝试绕过网络保护。
-
为什么当我从 powershell 命令行运行时它能够得到很好的响应?并且授权的 PAT 要求也不是为了安全。
标签: powershell azure-devops azure-devops-rest-api