Powershell使用子目录的正确路径从gitlab下载文件



我们的工具团队设置了Ansible Tower,以使用内部gitlab上托管的.ini文件中包含的清单。我无法改变这一点。随着环境中内容的变化(新建、退役等(,我需要修改这些文件

我想我已经很接近了。

我可以用私人访问令牌连接到gitlab并获得结果,但我不知道下载README.md文件以外的文件的路径是什么,比如这个

Invoke-RestMethod -Uri 'https://git.toolsite.com/api/v4/projects/13001/repository/files/README.md?ref=main' -Headers $Headers -Method GET
file_name : README.md file_path : README.md size : 139 encoding : base64

我还可以递归地列出文件:

Invoke-RestMethod -Uri 'https://git.toolsite.com/api/v4/projects/13001/repository/tree?ref=main&per_page=100&recursive=true' -Headers $Headers -Method GET

id   : 4cf897a48c777c58b6cfdb1705d9e0fe28602a10
name : Windows_Non-Prod_Servers_Inventory.ini
type : blob
path : Inventory/Windows_Non-Prod_Servers_Inventory.ini
mode : 100644
id   : 0ce79694fb4511b8a90379250ee829cd20b281f3
name : Windows_Prod_Servers_Inventory.ini
type : blob
path : Inventory/Windows_Prod_Servers_Inventory.ini

但我无法正确获取Inventory/Windows_Prod_Servers_Inventory.ini 的路径

Invoke-RestMethod -Uri 'https://git.toolsite.com/api/v4/projects/13001/repository/files/Inventory/Windows_Non-Prod_Servers_Inventory.ini?ref=main' -Headers $Headers -Method GET
Invoke-RestMethod : {"error":"404 Not Found"}

此外,在浏览器中,该文件的URL为https://git.toolsite.com/bswh/bswh_windows/-/blob/main/Inventory/Windows_Non-Prod_Servers_Inventory.ini

我需要一点帮助

感谢

我使用https://docs.gitlab.com/ee/api/index.html#namespaced-路径编码

您必须对目录名后面的任何"/"进行"编码"。所以在我的情况下,这很好/文件/库存,但必须在之后编码"/"。

Invoke-RestMethod -Uri 'https://git.toolsite.com/api/v4/projects/13001/repository/files/Inventory%2FWindows_Non-Prod_Servers_Inventory.ini?ref=main' -Headers $Headers -Method GET

还有任何想知道标题的人。一旦你从gitlab获得了一个"私有访问令牌",报头看起来像这样:

$privateAccessToken = "xxxxxxxxxxxxxxx" 
$Headers = @{
'PRIVATE-TOKEN' = $privateAccessToken
}

最新更新