【发布时间】:2021-10-25 21:02:22
【问题描述】:
我正在尝试使用 PowerShell 命令行将 Artifactory 文件夹下载为 tar.gz 文件。在 Bash 中,以下命令完成了这项工作:
curl -i -v -XGET -H 'X-JFrog-Art-Api:<my API key>' "https://artifactory.<myrepo.com>/path/to/files?archiveType=tar.gz" --output ./file_location/filename.tar.gz
然而,在 PowerShell 中,这似乎不起作用:
Invoke-RestMethod -uri "https://artifactory.<myrepo.com>/path/to/files?archiveType=tar.gz" -Method 'Get' -OutFile .\file_location\filename.tar.gz -H @{'X-JFrog-Art-Api' ='<my API key>';'Content-Type'='multipart/form-data'}
此操作会创建 filename.tar.gz,但该文件只是一个提供目录结构的 HTML 文件,而不是实际文件。
如果我只想要一个单独的文件,我可以使用 PowerShell 下载文件(不是存档):
Invoke-RestMethod -uri "https://artifactory.<myrepo.com>/path/to/files/filename.xyz" -Method 'Get' -OutFile .\file_location\filename.xyz -H @{'X-JFrog-Art-Api' ='<my API key>';'Content-Type'='multipart/form-data'}
并且文件名.xyz 被传输到本地机器。所以我有点困惑为什么制作存档的工具会失败。
【问题讨论】:
-
使用
Invoke-WebRequest可能会获得更好的结果。 -
您尝试发送
'Content-Type' = 'multipart/form-data'的任何特殊原因?这对 Get 请求无效。可能是您的标头正在发回“内容处置;附件”或其他启动自动下载的东西....如辣味.dll 所说,invoke-webrequest 可能会有所帮助-您可以检查响应标头。 -
Windows 10 和 Windows Server 2019 现在带有
curl.exe(和tar.exe),因此您可以使用现有的curl命令 - 只需确保将可执行文件指定为curl.exe,不仅仅是curl,因为后者是PowerShell 的Invoke-WebRequestcmdlet 的内置别名。
标签: powershell rest artifactory