Я припускаю базову автентифікацію тут.
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred
Ви можете отримати свої дані за допомогою інших засобів ( Import-Clixml
тощо), але це має бути [PSCredential]
об'єктом.
Редагувати на основі коментарів:
GitHub порушує RFC, як вони пояснюють у наданому вами посиланні :
API підтримує базову автентифікацію, як визначено в RFC2617, з кількома незначними відмінностями. Основна відмінність полягає в тому, що RFC вимагає відповіді на неавторизовані запити за допомогою 401 несанкціонованих відповідей. У багатьох місцях це свідчить про існування даних користувачів. Натомість API GitHub відповідає 404 Not Found. Це може спричинити проблеми для HTTP-бібліотек, які передбачають 401 несанкціоновану відповідь. Рішення полягає в ручному створенні заголовка авторизації.
Наскільки Invoke-WebRequest
мені відомо, Пауершелл чекає відповіді 401 перед відправкою облікових даних, і оскільки GitHub ніколи її не надає, ваші облікові дані ніколи не будуть надіслані.
Вручну побудуйте заголовки
Натомість вам доведеться самостійно створити основні заголовки аутентичності.
Основна автентифікація займає рядок, що складається з імені користувача та пароля, розділених двокрапкою, user:pass
а потім надсилає кодований результат Base64.
Цей код повинен працювати:
$user = 'user'
$pass = 'pass'
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
Authorization = $basicAuthValue
}
Invoke-WebRequest -Uri 'https://whatever' -Headers $Headers
Ви можете поєднати деякі конкатенації рядків, але я хотів розбити це, щоб зробити його більш зрозумілим.
$pair = "$($user):$($pass)"
Перевір затверджену відповідь. Я використовував вище, і це доставило мені біль