Saya mengasumsikan otentikasi dasar di sini.
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred
Anda bisa mendapatkan kredensial Anda melalui cara lain ( Import-Clixml
, dll.), Tetapi kredensial harus berupa [PSCredential]
objek.
Edit berdasarkan komentar:
GitHub melanggar RFC seperti yang mereka jelaskan di tautan yang Anda berikan :
API mendukung Otentikasi Dasar seperti yang didefinisikan dalam RFC2617 dengan sedikit perbedaan. Perbedaan utamanya adalah bahwa RFC membutuhkan permintaan yang tidak diautentikasi untuk dijawab dengan tanggapan 401 Tidak Sah. Di banyak tempat, ini akan mengungkap keberadaan data pengguna. Sebagai gantinya, GitHub API merespons dengan 404 Not Found. Ini dapat menyebabkan masalah untuk pustaka HTTP yang mengasumsikan respons 401 Tidak Sah. Solusinya adalah membuat header Otorisasi secara manual.
Sepengetahuan saya, Powershell Invoke-WebRequest
harus menunggu respons 401 sebelum mengirim kredensial, dan karena GitHub tidak pernah menyediakannya, kredensial Anda tidak akan pernah dikirim.
Buat header secara manual
Sebagai gantinya, Anda harus membuat sendiri header autentikasi dasar.
Otentikasi dasar mengambil string yang terdiri dari nama pengguna dan kata sandi yang dipisahkan oleh titik dua user:pass
dan kemudian mengirimkan hasil yang dikodekan Base64 itu.
Kode seperti ini seharusnya berfungsi:
$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
Anda dapat menggabungkan beberapa rangkaian string tetapi saya ingin memecahnya agar lebih jelas.
$pair = "$($user):$($pass)"
Periksa jawaban yang disetujui. Saya menggunakan cara di atas dan itu memberi saya terlalu banyak rasa sakit