【问题标题】:PowerShell : retrieve file from GitHubPowerShell:从 GitHub 检索文件
【发布时间】:2013-05-16 21:34:19
【问题描述】:

我需要从我的 GitHub 私人仓库下载一个文件。因此,按照 GitHub 网站上的说明,我为我的凭据创建了一个 OAuth 令牌。

然后我执行了这个 PS 脚本:

$WebClient = New-Object -TypeName System.Net.WebClient
$WebClient.Headers.Add('Authorization','{OAuth token}')
$uri = "https://github.com/mycompany/myrepo/blob/master/myfile.zip"
$targetPath = "c:\temp"
$WebClient.DownloadFile($uri, $targetPath)

但是,$WebClient.DownloadFile() 返回 404。这很奇怪,因为我可以通过使用与创建 OAuth 令牌相同的凭据登录到 GitHub 的浏览器从 $uri 检索文件。

【问题讨论】:

标签: powershell github powershell-3.0


【解决方案1】:

根据this,您的两个选项是 HTTPS 基本身份验证和 OAuth 令牌。

所以要向您的网络客户端添加基本身份验证,请尝试以下操作:

$url = 'https://github.com/mycompany/myrepo/blob/master/myscript.ps1'
$wc = New-Object -TypeName System.Net.WebClient
$wc.Credentials = New-Object -TypeName System.Net.NetworkCredential 'username', 'password'
iex ($wc.DownloadString($url))

要使用 OAuth,您需要添加一个名为 Authorization 的标头并提供令牌字符串作为参数。用这个替换上面示例中的 NetworkCredential 行。

$wc.Headers.Add('Authorization','token your_token')

按照说明 here 使用 curl 创建 OAuth 令牌。这部分可以使用 PowerShell 完成,但它只是一次性的,因此您可以使用 GitHub 提供的示例。

【讨论】:

  • 谢谢安迪。我已将我的问题修改为更清楚:我只是将 https 作为必须提供凭据的经过身份验证的站点的简写。是的,我需要 OAuth,因为我无法将纯文本凭据提交到源代码控制。
  • 我添加了一些额外的说明。但是,我没有可以测试的私人仓库。
  • 我使用 OAuth 令牌配置 WebClient 授权标头,但在尝试下载文件时我得到 404。请参阅我修改后的问题。
  • BaltoStar:这似乎是我在 StackOverflow 上能找到的关于这个主题的唯一帖子。不要以为过去五个月有什么启示?
  • 顺便说一句,这个解决方案不起作用。不知道为什么它被标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 2023-03-14
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 2021-09-02
相关资源
最近更新 更多