Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PowerShell : retrieve file from GitHub

I need to download a file from my GitHub private repo. So following the instructions on the GitHub site, I created an OAuth token for my credentials.

Then I executed this PS script :

$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)

However, $WebClient.DownloadFile() returns a 404. This is strange because I can retrieve the file from $uri via a browser logged-in to GitHub with same credentials used to create OAuth token.

like image 397
BaltoStar Avatar asked Aug 09 '26 13:08

BaltoStar


1 Answers

According to this your two options are HTTPS basic auth and an OAuth token.

So to add basic auth to your webclient try this:

$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))

To use OAuth you'll need to add a header named Authorization and provide the token string as an argument. Replace the NetworkCredential line from the example above with this.

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

Follow the instructions here to create the OAuth token using curl. This part can be done with PowerShell but it's only a one time thing so you can just use the example GitHub provides.

like image 153
Andy Arismendi Avatar answered Aug 11 '26 05:08

Andy Arismendi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!