我正在尝试创建将从Azure DevOps中删除存储库的Powershell脚本。我运行get请求,然后尝试将存储库ID传递给删除请求的URL,但每次执行此操作时,我都会收到错误“从客户端(:)检测到具有潜在危险的请求。路径值"。
如果我用repo id硬编码运行Rest调用,它会工作,但是当我尝试将repo id传递给url时,我会得到错误-有人知道任何可能的变通方法吗?
下面是这些命令的简要示例:
$APIUrl = "$baseUrl/$Org/$ProjectName/_apis/git/repositories/$RepoName?api-version=6.0"
$Repo = Invoke-RestMethod -Uri $APIUrl -Method Get -Credential $cred -Headers $header
$DeleteUrl = "$baseUrl/$Org/$ProjectName/_apis/git/repositories/$Repo.id?api-version=6.0"
Invoke-RestMethod -Uri $DeleteUrl -Method Delete -Credential $cred -Headers $Header
1条答案
按热度按时间twh00eeo1#
问题在于构造此URL字符串的方式:
在PowerShell中,只有简单的变量表达式(如
$Repo
)才会在双引号字符串中展开,.id
将被忽略。这样,像
"/$Repo.id?api"
这样的字符串文字就扩展为像/@{id=repoId; name=repoName; ...}.id?api-version=6.0
这样的值--这就是AzDO前面的Web处理程序抱怨“潜在危险路径”的原因。使用
$(...)
子表达式运算符将整个表达式嵌套在字符串文字中: