PowerShell:从GitHub检索文件

时间:2013-05-16 21:34:19

标签: powershell github powershell-v3.0

我需要从我的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.这很奇怪,因为我可以通过登录到GitHub的浏览器从$uri检索文件,并使用相同的凭据创建OAuth令牌。

1 个答案:

答案 0 :(得分:1)

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

因此,要将基本身份验证添加到您的webclient,请尝试以下操作:

$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提供的例子。