Azure DevOps Get Work Item API $expand参数使用异常求助
解决Azure DevOps Get Work Item API展开Relations的问题
问题原因
- 带
$的命令报错:PowerShell中$是变量标识符,直接在双引号字符串里写$expand会被解析为变量,而非URL的查询参数,导致实际传递给API的参数值异常,触发"The value 'relations' is not valid for Nullable`1"错误。 - 去掉
$后参数被忽略:Invoke-VSTeamRequestcmdlet有专门的参数处理逻辑,直接将expand拼接在URL中会被内部过滤,无法正确传递给API。
正确实现方式
方法1:用单引号包裹URL(避免PowerShell解析$)
单引号字符串不会解析PowerShell变量,可直接保留URL中的$expand参数:
$workItem = Invoke-VSTeamRequest -Url 'https://dev.azure.com/{org}/{project}/_apis/wit/workitems/{id}?api-version=7.1-preview.3&$expand=relations'
方法2:使用QueryParameters参数(推荐)
Invoke-VSTeamRequest支持通过QueryParameters参数传递查询参数,更规范且避免URL拼接问题:
$queryParams = @{ 'api-version' = '7.1-preview.3' '$expand' = 'relations' } $workItem = Invoke-VSTeamRequest -Url 'https://dev.azure.com/{org}/{project}/_apis/wit/workitems/{id}' -QueryParameters $queryParams
方法3:转义$符号
如果必须使用双引号包裹URL,用反引号转义$`,让PowerShell将其视为普通字符:
$workItem = Invoke-VSTeamRequest -Url "https://dev.azure.com/{org}/{project}/_apis/wit/workitems/{id}?api-version=7.1-preview.3&`$expand=relations"
验证结果
调用成功后,返回的$workItem对象中会包含relations属性,对应工作项的关联关系数组。
内容的提问来源于stack exchange,提问作者user26526222
相关产品推荐
相关产品推荐

