Invoke-WebRequest: przekazywanie poświadczeń serwera proxy w programie PowerShell
Invoke-WebRequest ma osobne parametry poświadczeń serwera proxy. Poświadczenia miejsca docelowego i udane logowanie w przeglądarce ich nie zastępują.
W przypadku jawnego konta serwera proxy przekaż obiekt poświadczeń do -ProxyCredential:
$proxyAccount = Get-Credential
Invoke-WebRequest -Uri https://example.com/ -Proxy http://proxy.example:8080 -ProxyCredential $proxyAccountZastąp punkt końcowy zatwierdzoną usługą. Get-Credential pyta o konto, zamiast osadzać hasło w wierszu polecenia. To konto trafia do pośrednika; poświadczenia miejsca docelowego to osobny parametr i nie mogą odpowiedzieć na 407 serwera proxy.
Jeśli schemat uwierzytelniania serwera proxy i tożsamość procesu obsługują uwierzytelnianie zintegrowane, wybierz -ProxyUseDefaultCredentials. Nie łącz go z jawnymi poświadczeniami serwera proxy w tym samym żądaniu.
Sprawdź dokumentację wersji programu PowerShell, która uruchamia skrypt. Windows PowerShell i nowoczesny PowerShell różnią się implementacją i dostępnością parametrów; obsługiwane wersje udostępniają także -NoProxy dla jawnego żądania bezpośredniego.
Gdy ten sam skrypt zachowuje się inaczej jako zadanie
Sprawdź odpowiednie wpisy $PSDefaultParameterValues i konfigurację serwera proxy obsługiwaną przez proces. Profil może przy starcie sesji dodać domyślne ustawienia serwera proxy dla konkretnego polecenia. Zaplanowane zadanie może pominąć ten profil i działać jako inna tożsamość, mimo że plik skryptu się nie zmienił.
Porównaj adres URL miejsca docelowego, wybrany punkt końcowy, wymaganą metodę serwera proxy, wersję programu PowerShell oraz poświadczenia jawne i domyślne, zasłaniając sekrety. Jeśli uwierzytelnianie serwera proxy się powiedzie, a miejsce docelowe zwróci 401, zbadaj logowanie do tego miejsca docelowego, zamiast przenosić hasło serwera proxy do parametru poświadczeń źródła.