如何用PowerShell调用REST API获取Azure Purview术语表条目?
通过PowerShell调用Azure Purview REST API获取术语表条目
问题背景
我正在用PowerShell集成Azure Purview与其他系统,目标是通过REST API批量获取Purview中的所有术语表条目。已完成Azure认证并获取到有效的Bearer令牌,但调用API时返回"Not found"错误,核心问题是不知道**术语表ID(glossaryId)**的获取方式,也不确定正确的API请求结构。
解决方案
1. 先获取术语表ID
术语表ID(即guid)需要先通过API查询,无法直接留空。运行以下脚本可获取所有术语表的名称和对应ID:
# 替换为你的Purview账户名 $purviewAccountName = "PurviewAccountName" $token = Get-AzAccessToken -ResourceUrl "https://purview.azure.net" | Select-Object -ExpandProperty AccessToken # 获取所有术语表的API端点 $glossaryListEndpoint = "https://$purviewAccountName.purview.azure.com/datamap/api/atlas/v2/glossary?api-version=2023-09-01" $headers = @{ 'Authorization' = "Bearer $token" 'Content-Type' = 'application/json' } try { $glossaries = Invoke-RestMethod -Uri $glossaryListEndpoint -Headers $headers -Method Get # 输出所有术语表的名称和ID $glossaries | Select-Object name, guid } catch { Write-Error "获取术语表列表失败: $_" }
运行后会返回所有术语表的name(名称)和guid(即所需的glossaryId),默认术语表通常名为"Glossary",复制其guid即可。
2. 获取指定术语表的所有条目
将拿到的glossaryId替换到脚本中,注意limit参数建议设为较大值(如1000),若条目数量超过该值需分页处理:
$purviewAccountName = "PurviewAccountName" # 替换为上面获取到的术语表ID $glossaryId = "your-glossary-guid-here" $token = Get-AzAccessToken -ResourceUrl "https://purview.azure.net" | Select-Object -ExpandProperty AccessToken # 正确的术语表条目查询端点,支持分页和排序 $endpoint = "https://$purviewAccountName.purview.azure.com/datamap/api/atlas/v2/glossary/$glossaryId/terms?api-version=2023-09-01&limit=1000&offset=0&sort=name:ASC" $headers = @{ 'Authorization' = "Bearer $token" 'Content-Type' = 'application/json' } try { $response = Invoke-RestMethod -Uri $endpoint -Headers $headers -Method Get # 按需输出条目核心字段,可根据需求调整 $response | Select-Object guid, name, definition, status } catch { # 捕获详细错误信息用于排查 Write-Error "获取术语表条目失败: $($_.Exception.Message)" if ($_.ErrorDetails) { Write-Error "API返回错误: $($_.ErrorDetails.Message)" } }
关键注意事项
- 分页处理:若术语表条目超过
limit设置的数量,需循环递增offset参数,直到返回的条目数为0。 - API版本:建议使用最新稳定版API(如
2023-09-01),避免旧版本兼容性问题。 - 权限验证:确保当前Azure账户拥有Purview的Data Curator或Data Reader权限,否则会返回权限错误。
内容的提问来源于stack exchange,提问作者Nicol
相关产品推荐
相关产品推荐

