Ha a hálózat csak proxykiszolgálón keresztül fér hozzá az internethez, akkor nem fér hozzá a PowerShell-munkamenethez tartozó külső erőforrásokhoz: egy weboldalhoz (Invoke-WebRequest parancsmag), a súgó frissítéséhez az Update-Help segítségével, csatlakozni az Office365 / Azure-hoz vagy Töltse le a csomagot egy alkalmazással egy külső csomagtárból (a PackageManagement vagy a NanoServerPackage használatával). Ebben a cikkben megértjük, hogyan lehet elérni az internetet a PowerShell munkamenetből egy proxykiszolgálón keresztül, hitelesítéssel.
Próbálja meg frissíteni a Powershell súgóját:
Update Súgó
Vagy hivatkozzon egy külső weboldalra:
Invoke-WebRequest http://winitpro.ru
Ha nincs közvetlen hozzáférés az internethez, akkor a parancs körülbelül a következő típusú hibát adja vissza:
frissítés-súgó: A (z) 'DhcpServer, DirectAccessClientComponents ....' modul (ok) súgójának frissítése nem sikerült. felhasználói felület kultúrájával en-US: Nem lehet csatlakozni a Súgó tartalomhoz. Előfordulhat, hogy a szerver, amelyen a Súgótartalom tárolódik, nem érhető el. Ellenőrizze, hogy a szerver elérhető-e, vagy várjon, amíg a szerver visszatér online, majd próbálja meg újra a parancsot.
Invoke-WebRequest: Nem lehet csatlakozni a távoli szerverhez
A tény az, hogy a Powershell (vagy inkább a .NET osztály rendszer.nettó.webes, amelyet minden cmdlet használ a külső erőforrások elérésére HTTP / HTTPS útján), nem használja az Interent Explorerben megadott rendszerproxy-beállításokat. A WebClient osztálynak azonban vannak olyan tulajdonságai, amelyek lehetővé teszik a proxykiszolgáló-beállítások (WebClient.Proxy) és az azokon belüli engedélyezési adatok (WebClient.Credentials vagy WebClient.UseDefaultCredentials) meghatározását. Fontolja meg, hogyan lehet használni ezeket a WebClient osztály tulajdonságait.
Proxybeállítások a PowerDhellhez a CMD-ből
Ellenőrizze a rendszerproxy aktuális beállításait egy Powershell-munkamenetben:
netsh winhttp show proxy
Mint láthatja, a proxybeállítások nincsenek beállítva..
A WinHTTP proxy jelenlegi beállításai: Közvetlen hozzáférés (nincs proxy szerver).
Proxybeállításokat importálhat az Internet Explorer beállításaiból:
netsh winhttp import proxy forrás = azaz
vagy állítsa be kézzel:
A netsh winhttp proxy "192.168.0.14 ∗ 128" proxy
Ha be kell jelentkeznie a proxy szerverre, akkor hibák jelennek meg a PowerShell kérések végrehajtásakor. ”(407) meghatalmazott hitelesítés kötelező”. Például, amikor megpróbálja csatlakozni az Azure-előfizetéshez a következő paranccsal:
Add-AzureAccount -Credential (Get-Credential)
A hibát kapom:
Add-AzureAccount: user_realm_discovery_failed: A felhasználói tartomány felfedezése sikertelen: A távoli kiszolgáló hibát adott vissza: (407) Proxy-hitelesítés szükséges.
PowerShell Proxy-hitelesítés
Fontolja meg a proxykiszolgálón végzett két hitelesítési módszert: SSO hitelesítést használhat, vagy megadhat nevet és felhasználót a hitelesítéshez manuálisan.
Ha a rendszerben egy domain fiókkal rendelkezik jogosultsággal, és a proxy támogatja a Kerberos vagy az NTLM Active Directory hitelesítést (ha még nem tiltotta le), akkor a proxy szerver hitelesítéséhez felhasználhatja az aktuális felhasználó hitelesítő adatait (nem kell megadnia nevet / jelszót) ):
$ Wcl = új objektum System.Net.WebClient
$ Wcl.Headers.Add (“user-agent”, “PowerShell Script”)
$ Wcl.Proxy.Credentials =
[System.Net.CredentialCache] :: DefaultNetworkCredentials
Ha manuálisan hitelesítenie kell egy proxyszervert, akkor futtassa a következő parancsokat a felhasználói ablak és a jelszó megadásával a megfelelő ablakban.
$ Wcl = Új objektum System.Net.WebClient
$ Creds = Get-Credential
$ Wcl.Proxy.Credentials = $ Creds
Most megpróbálhat elérni egy külső webhelyet, vagy frissítheti a súgót az Update-Help paranccsal.
Mint láthatja, az Invoke-Web Request parancsmag visszaadta az adatokat a külső webhelyről!
Állítsa be a proxybeállításokat a PowerShell-profilban
Készíthet egy PowerShell-profilt, hogy automatikusan futtassa a proxy-importálási parancsokat a PowerShell indításakor.
Ehhez futtassa a profilt létrehozó parancsot ("C: \ Felhasználók \ felhasználónév \ Dokumentumok \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1
„):
Jegyzettömb $ PROFILE
(vagy Jegyzettömb $ PROFILE.AllUsersCurrentHost
- ha minden felhasználónak PowerShell profilt kell alkalmaznia).
Másolja a szükséges PowerShell-kódot a jegyzettömbbe. Például fájlokat (Autoconfig) használ a proxybeállítások konfigurálására a PAC kliensen. Megadhatja a kiszolgáló címét a PAC fájllal és a hitelesítési módszerrel a proxy kiszolgálón az aktuális felhasználó alatt:
[system.net.webrequest] :: DefaultWebProxy = new-object system.net.webproxy ('http://192.168.1.90:80')
# az előző sort kicserélheti a netsh winhttp import proxy source = azaz ha proxy beállításokat szeretne importálni az Internet Explorerből
[system.net.webrequest] :: DefaultWebProxy.credentials = [System.Net.CredentialCache] :: DefaultNetworkCredentials
# kérheti a felhasználói hitelesítő adatokat
# System.Net.WebRequest] :: DefaultWebProxy.Credentials = Get-Credential
# betölti a felhasználói jelszót egy XML fájlból (lásd a PowerShellben elmentett jelszavak használatáról szóló cikket):
# System.Net.WebRequest] :: DefaultWebProxy = Import-Clixml - Útvonal c: \ pc \ password.xml
[system.net.webrequest] :: DefaultWebProxy.BypassProxyOnLocal = $ true
Set-ExecutionPolicy RemoteSigned
Mentse a Microsoft.PowerShell_profile.ps1 fájlt, és indítsa újra a PowerShell parancssort. Győződjön meg arról, hogy a PowerShell-munkamenetből proxy segítségével hozzáférhet az internetes erőforrásokhoz, további parancsok futtatása nélkül.
Proxybeállításokat szerezhet a PowerShell-ből
A jelenlegi proxybeállításokat a nyilvántartásból a PowerShell paranccsal kaphatja meg:
Get-ItemProperty - A 'HKCU: \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings' elérési útja | Select Object ProxyServer, ProxyEnable
Példámban a proxy szerver címe és portja: 192.168.0.14:3128
Proxy szerver engedélyezve: ProxyEnable = 1
A WebProxy-beállításokat így kaphatja meg:
[System.Net.WebProxy] :: GetDefaultProxy ()
Szükség esetén engedélyezheti (letilthatja) a proxyk használatát a következő parancsokkal:
Set-ItemProperty -Path 'HKCU: \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings' ProxyEnable -value 1
és
Set-ItemProperty -Path 'HKCU: \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings' ProxyEnable -érték 0
A proxybeállítások megváltoztatása a PowerShell segítségével?
A proxy beállításait a PowerShell segítségével állíthatja be. Például a következő PowerShell funkció lehetővé teszi a proxybeállítások megváltoztatását, de először a Test-NetConnection parancsmag segítségével ellenőrzi a proxyszerver és a rajta található port elérhetőségét.
Set-Proxy funkció ($ szerver, $ port)
If ((Tesztelje a NetConnection -ComputerName $ szervert -Port $ portot) .TcpTestSucceched)
Set-ItemProperty - A 'HKCU elérési útja: \ Szoftver \ Microsoft \ Windows \ CurrentVersion \ Internet Beállítások' -név ProxyServer -Érérték "$ ($ szerver): $ ($ port)"
Set-ItemProperty - 'HKCU elérési útja: \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings' -név ProxyEnable -Value 1
Else
Írási hiba - Üzenet "Érvénytelen proxybeállítások: $ ($ szerver): $ ($ port)"
Set-Proxy 192.168.0.14 3128