Здесь нужно разобраться с двумя основными вопросами:
- Заголовок
Authorization
должен иметь следующий формат:
Authorization: bearer ${token}
- Проблема была связана с тем, что GitHub возвратил 404 Not Found:
HTTP/1.1 404 Not Found
Date: Mon, 14 Jan 2019 16:48:15 GMT
Content-Type: text/html; charset=utf-8
Server: GitHub.com
Чтобы решить эту проблему, вы должны убедиться, что получили URL-адрес raw содержимого файла, например:
Тогда все должно работать нормально. Финальный код идентичен вашему, просто настройте заголовок.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
$wc = New-Object -TypeName System.Net.WebClient;
$wc.Headers.Add('Authorization','bearer $token ');
$wc.DownloadFile('https://github.com/path/to/raw/file', '/path/to/output');
Обновление
Если вы хотите загрузить двоичные файлы, то URL-адрес должен слегка измениться, поскольку двоичные файлы хранятся в другом месте. Примечание для будущих читателей, это может измениться.
В настоящее время формат у меня есть:
https://raw.githubusercontent.com/$USERNAME/$REPO_NAME/$BRANCH_NAME/$BINARY_NAME
Или в моем случае это было:
https://raw.githubusercontent.com/JuxhinDB/Test/master/Test.exe