我需要从我的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令牌。
答案 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提供的例子。