我正在尝试使用powershell将repo下载为zip文件。以下是我尝试的方法。
$token = "MyGitToken";
$repo = "https://github.com/my-private-repo/archive/master.zip";
$targetFile = "./master.zip";
$restRequest = @{
Method = "Get"
Uri = "$repo"
Headers = @{
Authorization = "Token $token"
Accept = "application/vnd.github.v3.raw"
}
};
$response = Invoke-RestMethod @restRequest -OutFile $targetFile;
我得到了以下错误。你知道如何按照评论中的建议解决这个问题吗。。
System.Net.WebException: The remote server returned an error: (406) Not Acceptable.
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
附言:当我在浏览器中直接点击$repo url时,我可以下载zip文件。
EDIT:更新了Invoke-RestMethod
命令,只使用OutFile
而不是管道。
HTTP Accept标头是一条指向服务器的指令,表示
嘿,我只能理解这些格式
所以,在你的请求中,你说的是
Github,我想要这个文件,但我也希望你为我做一些工作,并将其制作成这种格式,kthanxbai
GitHub正在响应406不可接受,因为它没有时间容纳你或你奇怪的请求格式,也因为你在结尾处省略了*
选项,这意味着"我会接受任何形式的";。
要修复此问题,请尝试在没有Accepts标头的情况下执行请求,或者像这样修改您的标头:
Accept = "application/vnd.github.v3.raw,*"
来源:
Accept头告诉服务器浏览器正在查找的文件格式,或者更正确的MIME类型。。。
https://www.newmediacampaigns.com/blog/browser-rest-http-accept-headers