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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With