PowerShell proxy: Invoke-WebRequest, PSGallery và biến môi trường
PowerShell proxy là cách cấu hình để lệnh PowerShell như Invoke-WebRequest, Invoke-RestMethod, Install-Module đi Internet qua máy chủ proxy. Người quản trị hệ thống và lập trình viên trên Windows hay gặp nhu cầu này khi làm việc sau proxy công ty, khi script cần gọi API qua IP khác, hoặc khi cài module từ PowerShell Gallery mà mạng chặn kết nối trực tiếp. Bài này ProxyVN giải thích khác biệt giữa Windows PowerShell 5.1 và PowerShell 7, cách dùng tham số proxy cho từng lệnh, đặt proxy mặc định cho cả phiên, cài module sau proxy, đọc cấu hình proxy hệ thống và sửa lỗi thường gặp. Xem thêm dịch vụ tại ProxyVN.
Tổng quan về PowerShell proxy
PowerShell là shell và ngôn ngữ kịch bản của Microsoft, có hai dòng chính: Windows PowerShell 5.1 đi kèm Windows, dựa trên .NET Framework, và PowerShell 7 đa nền tảng, dựa trên .NET hiện đại. Hai dòng xử lý proxy khác nhau ở chỗ quan trọng: lấy cấu hình proxy mặc định từ đâu.
Trong cả hai, các lệnh gửi yêu cầu web đều có tham số để chỉ định proxy cho từng lệnh. Ngoài ra có thể đặt proxy mặc định cho cả phiên, hoặc để PowerShell tự dùng proxy của hệ thống. Bài này không nói về việc bật tắt proxy Windows bằng PowerShell, phần đó có trong bài cách cài proxy trên Windows 11.
Khi nào cần PowerShell proxy
- Mạng công ty bắt buộc proxy: script gọi API bên ngoài, tải tệp, cài module đều phải qua proxy.
- Script gọi API cần IP khác: kiểm tra API theo vùng, chia tải qua nhiều IP.
- Cài module từ PowerShell Gallery: Install-Module thất bại vì không ra được mạng.
- Tự động hoá trên máy chủ: tác vụ theo lịch chạy dưới tài khoản dịch vụ, cần proxy riêng.
- Gỡ lỗi kết nối: thử nhanh một địa chỉ qua proxy mà không mở trình duyệt.

Hai thế hệ PowerShell và proxy
Windows PowerShell 5.1 và PowerShell 7 khác nhau ở đâu
Tiêu chí |
Windows PowerShell 5.1 |
PowerShell 7 |
|---|---|---|
Nền tảng |
.NET Framework |
.NET hiện đại |
Proxy mặc định |
Proxy hệ thống của Windows (cài đặt Internet) |
Biến môi trường HTTP_PROXY, HTTPS_PROXY trước, rồi proxy hệ thống trên Windows |
Đặt proxy cho phiên |
[System.Net.WebRequest]::DefaultWebProxy |
[System.Net.Http.HttpClient]::DefaultProxy |
Chạy trên Linux, macOS |
Không |
Có |
Khác biệt này giải thích nhiều tình huống khó hiểu: cùng một script, chạy bằng PowerShell 5.1 thì qua proxy, chạy bằng PowerShell 7 thì không, hoặc ngược lại, tuỳ biến môi trường và cài đặt hệ thống.
Tham số PowerShell proxy của Invoke-WebRequest và Invoke-RestMethod
Cách rõ ràng nhất là chỉ định proxy ngay trong lệnh. Tài liệu đầy đủ có ở trang Invoke-WebRequest và trang Invoke-RestMethod của Microsoft.

Tham số proxy của Invoke-WebRequest
Tham số -Proxy
Truyền địa chỉ proxy dạng URI:
Invoke-RestMethod -Uri "https://api.ipify.org?format=json" -Proxy "http://103.x.x.x:8080"
Kết quả trả về IP mà máy chủ đích nhìn thấy. Nếu là IP của proxy, cấu hình đã đúng. Địa chỉ proxy bắt đầu bằng http:// kể cả khi gọi địa chỉ HTTPS, vì kết nối tới proxy là HTTP thường.
Tham số -ProxyCredential
Proxy cần tài khoản mật khẩu thì truyền đối tượng PSCredential:
$cred = Get-Credential
Invoke-WebRequest -Uri "https://example.com" -Proxy "http://103.x.x.x:8080" -ProxyCredential $cred
Get-Credential mở hộp thoại nhập tài khoản. Trong script chạy tự động, tạo PSCredential từ mật khẩu đọc trong kho bí mật thay vì gõ tay.
Tham số -ProxyUseDefaultCredentials
Trong mạng công ty dùng xác thực Windows (NTLM, Kerberos), thêm tham số này để gửi thông tin đăng nhập Windows hiện tại cho proxy, không cần nhập mật khẩu.
Tham số -NoProxy trong PowerShell 7
PowerShell 7 có tham số -NoProxy để bỏ qua mọi proxy cho một lệnh, kể cả biến môi trường và proxy hệ thống. Tiện khi gọi dịch vụ nội bộ trong lúc phiên đang đặt proxy mặc định.
Lưu ý về SOCKS
Invoke-WebRequest trong PowerShell 5.1 chỉ hỗ trợ proxy HTTP. PowerShell 7 trên .NET mới có hỗ trợ SOCKS ở một số phiên bản. Nếu cần SOCKS5 ổn định, dùng curl.exe có sẵn trên Windows 10, 11 với tham số -x socks5h://. Các lệnh curl hữu ích có trong bài cURL proxy là gì.
Đặt PowerShell proxy mặc định cho cả phiên
Gõ -Proxy cho từng lệnh rất bất tiện trong script dài. Đặt proxy mặc định giúp mọi lệnh trong phiên tự dùng.
Windows PowerShell 5.1: DefaultWebProxy
[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://103.x.x.x:8080", $true)
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
Tham số thứ hai là true để bỏ qua proxy với địa chỉ cục bộ. Dòng thứ hai dùng thông tin đăng nhập Windows hiện tại cho proxy công ty. Với proxy có tài khoản riêng, gán đối tượng NetworkCredential chứa tài khoản mật khẩu. Thuộc tính này được mô tả trong trang WebRequest.DefaultWebProxy.
PowerShell 7: biến môi trường
PowerShell 7 đọc biến HTTP_PROXY, HTTPS_PROXY, NO_PROXY. Đặt trong phiên:
$env:HTTPS_PROXY = "http://user:matkhau@103.x.x.x:8080"
$env:HTTP_PROXY = $env:HTTPS_PROXY
$env:NO_PROXY = "localhost,127.0.0.1,.noibo.local"
Lưu ý giá trị biến được đọc khi khởi tạo đối tượng proxy mặc định, đổi biến giữa phiên có thể không có tác dụng ngay với một số lệnh. Mở phiên mới sau khi đặt biến cố định là chắc nhất. Cách viết danh sách ngoại lệ có trong bài NO_PROXY là gì.
PowerShell 7: HttpClient.DefaultProxy
Cũng có thể gán trực tiếp [System.Net.Http.HttpClient]::DefaultProxy bằng đối tượng WebProxy, tương tự cách của 5.1. Cách này không phụ thuộc biến môi trường.
Lưu cố định trong profile
Đặt các dòng trên vào tệp profile của PowerShell, đường dẫn xem bằng biến $PROFILE. Mỗi phiên mới tự có cấu hình proxy. Không ghi mật khẩu trong profile nếu máy dùng chung.
Cài module PSGallery qua PowerShell proxy công ty
Install-Module là lệnh hay bị chặn nhất trong mạng công ty. Lỗi thường là không tìm thấy kho hoặc không tải được nhà cung cấp NuGet.

Cài module sau proxy công ty
Đặt proxy mặc định trước khi cài
Với PowerShell 5.1, đặt DefaultWebProxy như phần trên, kèm thông tin đăng nhập, rồi chạy Install-Module. PowerShellGet sẽ đi qua proxy mặc định.
Dùng tham số proxy của Install-Module
PowerShellGet bản 2 có tham số -Proxy và -ProxyCredential cho Install-Module, Find-Module. Truyền trực tiếp khi không muốn đổi proxy mặc định của phiên.
Bật TLS 1.2 trên PowerShell 5.1
PowerShell Gallery chỉ chấp nhận TLS 1.2 trở lên. Windows PowerShell 5.1 trên máy cũ có thể mặc định TLS cũ, lỗi trông giống lỗi proxy. Thêm dòng sau trước khi cài:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Cập nhật PowerShellGet
Bản PowerShellGet đi kèm Windows cũ có nhiều hạn chế. Microsoft hướng dẫn cài bản mới trong trang Install PowerShellGet. Cài bản mới cũng cần qua proxy, nên đặt proxy trước.
Kho nội bộ
Nhiều công ty dựng kho module nội bộ, đồng bộ từ PowerShell Gallery. Đăng ký kho nội bộ bằng Register-PSRepository và thêm vào danh sách không dùng proxy, vừa nhanh vừa tránh lỗi proxy.
Đọc cấu hình hệ thống trước khi đặt PowerShell proxy
Trước khi cấu hình, nên biết hệ thống đang dùng proxy nào. PowerShell đọc được nhiều nguồn cấu hình.

Đọc cấu hình proxy hệ thống
Proxy của người dùng trong registry
Cài đặt proxy trong Settings của Windows lưu ở khoá HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings. Lệnh Get-ItemProperty đọc các giá trị ProxyEnable, ProxyServer, ProxyOverride và AutoConfigURL. Cách xem proxy bằng giao diện có trong bài cách xem proxy của máy tính.
Proxy cho một địa chỉ cụ thể
Lệnh [System.Net.WebRequest]::GetSystemWebProxy().GetProxy("https://example.com") trả về proxy mà hệ thống sẽ dùng cho địa chỉ đó, đã tính cả tệp PAC và danh sách ngoại lệ. Rất tiện khi máy dùng tệp PAC phức tạp. Cơ chế PAC có trong bài PAC proxy.
Proxy WinHTTP
Dịch vụ Windows và một số ứng dụng dùng WinHTTP, có cấu hình proxy riêng, không theo cài đặt của người dùng. Lệnh netsh winhttp show proxy hiển thị cấu hình này. Lệnh netsh winhttp import proxy source=ie sao chép cấu hình của người dùng sang WinHTTP.
Biến môi trường
Lệnh Get-ChildItem Env: | Where-Object Name -like "*proxy*" liệt kê mọi biến proxy đang có trong phiên. Biến còn sót từ phần mềm khác là nguyên nhân hay gặp của lỗi khó hiểu.
Lỗi PowerShell proxy thường gặp và cách sửa
Thông báo |
Nguyên nhân khả dĩ |
Cách sửa |
|---|---|---|
(407) Proxy Authentication Required |
Thiếu hoặc sai thông tin xác thực |
Dùng -ProxyCredential hoặc -ProxyUseDefaultCredentials |
Unable to connect to the remote server |
Proxy chết, sai địa chỉ, tường lửa |
Kiểm tra proxy bằng curl.exe, kiểm tra cổng |
The underlying connection was closed |
TLS cũ trên PowerShell 5.1 |
Bật TLS 1.2 |
Install-Module không tìm thấy kho |
Không ra được mạng, proxy chưa đặt |
Đặt DefaultWebProxy, cập nhật PowerShellGet |
Lệnh vẫn đi thẳng dù đã đặt biến |
PowerShell 5.1 không đọc HTTP_PROXY |
Dùng DefaultWebProxy hoặc -Proxy |
Gọi dịch vụ nội bộ bị lỗi |
Thiếu danh sách ngoại lệ |
Thêm vào NO_PROXY hoặc bypass list |
Proxy trỏ về 127.0.0.1 không chạy |
Cấu hình còn sót từ phần mềm đã tắt |
Gỡ cấu hình proxy hệ thống |
Lỗi 407 chi tiết
Proxy công ty dùng NTLM thì -ProxyUseDefaultCredentials thường giải quyết được. Proxy mua dùng Basic thì cần -ProxyCredential với tài khoản đúng. Cơ chế có trong bài sửa lỗi 407 Proxy Authentication Required.
Proxy trỏ về 127.0.0.1
Phần mềm gỡ lỗi hay phần mềm proxy cục bộ có thể để lại cấu hình 127.0.0.1 sau khi tắt. Mọi lệnh web lỗi kết nối bị từ chối. Tình huống được giải thích trong bài proxy 127.0.0.1.
Lỗi ghi cấu hình proxy
Khi dùng PowerShell để sửa cấu hình proxy hệ thống mà gặp lỗi ghi, có thể do chính sách nhóm khoá cài đặt hoặc quyền hạn. Xem bài error writing proxy settings.
PowerShell proxy trong tác vụ tự động
Script chạy theo lịch trên máy chủ có môi trường khác với phiên tương tác của người dùng.
Tác vụ chạy dưới tài khoản dịch vụ
Task Scheduler chạy script dưới tài khoản SYSTEM hay tài khoản dịch vụ không có cài đặt proxy của người dùng. Script phải tự đặt proxy ở đầu, hoặc dựa vào cấu hình WinHTTP.
Lưu thông tin xác thực an toàn
Không ghi mật khẩu proxy trong script. Dùng mô-đun quản lý bí mật của PowerShell hoặc Windows Credential Manager, đọc ra khi chạy.
Ghi log
Ghi log kết quả mỗi lần gọi web kèm proxy đã dùng. Khi tác vụ lỗi lúc nửa đêm, log cho biết lỗi do proxy hay do dịch vụ đích.
Chính sách nhóm
Trong doanh nghiệp, proxy thường được đẩy xuống máy qua chính sách nhóm. Script nên tôn trọng cấu hình này thay vì ghi đè. Cách quản lý proxy qua chính sách nhóm có trong bài Group Policy proxy.
Dùng PowerShell proxy để gọi API theo vùng
Ngoài proxy công ty, nhiều người dùng PowerShell gọi API qua proxy mua để kiểm tra dữ liệu theo vùng.
Xoay proxy trong script
Đọc danh sách proxy từ tệp, lặp qua từng địa chỉ API, mỗi lần gọi một proxy khác bằng tham số -Proxy. Bọc trong try catch để bỏ qua proxy lỗi.
Kiểm tra IP trước khi gọi
Gọi một dịch vụ trả về IP trước để xác nhận proxy đang dùng đúng vùng. Ghi kết quả vào log.
Chọn proxy phù hợp
API dành cho thị trường Việt Nam cần IP Việt Nam để trả đúng dữ liệu. Nếu cần proxy Việt Nam ổn định cho script PowerShell, anh em có thể mua proxy tại ProxyVN, mỗi proxy hỗ trợ cả HTTP và SOCKS5.
PowerShell proxy khi tải tệp và dùng công cụ khác
Ngoài Invoke-WebRequest, script PowerShell hay gọi thêm nhiều công cụ khác. Mỗi công cụ có cách nhận proxy riêng.
Start-BitsTransfer
BITS là dịch vụ tải tệp nền của Windows, dùng cho tệp lớn và tải tiếp khi mất mạng. Start-BitsTransfer có tham số -ProxyUsage, -ProxyList và -ProxyCredential. Mặc định BITS dùng cấu hình proxy hệ thống, nên trong mạng công ty thường chạy được mà không cần thêm gì.
curl.exe và wget
Windows 10, 11 có sẵn curl.exe. Lưu ý trong Windows PowerShell 5.1, gõ curl sẽ gọi bí danh của Invoke-WebRequest, phải gõ curl.exe để dùng curl thật. curl.exe đọc biến môi trường và nhận tham số -x. Nếu cài wget cho Windows, cách cấu hình có trong bài wget proxy.
git, npm, pip
Các công cụ dòng lệnh này không dùng cấu hình proxy của PowerShell mà đọc biến môi trường hoặc tệp cấu hình riêng. Đặt $env:HTTPS_PROXY trong phiên sẽ có tác dụng với chúng. Cấu hình riêng cho git có trong bài git proxy. Lỗi đường hầm với npm, Node.js có bài tunneling socket could not be established.
winget và Windows Update
winget và Windows Update dùng cấu hình của hệ thống, chủ yếu là WinHTTP hoặc cài đặt của người dùng. Nếu cài phần mềm bằng winget thất bại trong mạng công ty, kiểm tra cấu hình WinHTTP bằng netsh winhttp show proxy.
WSL từ PowerShell
Lệnh chạy WSL từ PowerShell không mang theo biến proxy của Windows vào Linux, trừ khi cấu hình chia sẻ biến. Cách cấu hình proxy cho WSL có trong bài WSL proxy.
Bật tắt PowerShell proxy nhanh bằng hàm tự viết
Người làm việc ở nhiều mạng, lúc ở công ty cần proxy, lúc ở nhà không cần, nên có hàm bật tắt nhanh trong profile.
Hàm bật proxy
Viết một hàm đặt biến môi trường HTTP_PROXY, HTTPS_PROXY, NO_PROXY và DefaultWebProxy cùng lúc. Gọi hàm khi tới văn phòng, mọi lệnh sau đó đi qua proxy.
Hàm tắt proxy
Hàm thứ hai xoá các biến và đặt DefaultWebProxy về null hoặc về proxy hệ thống. Gọi khi về nhà hoặc khi cần gọi dịch vụ nội bộ trực tiếp.
Tự nhận biết mạng
Nâng cao hơn, profile kiểm tra tên mạng Wi-Fi hoặc dải IP hiện tại bằng Get-NetConnectionProfile, tự bật proxy khi ở mạng công ty. Cách này tránh quên bật hay quên tắt.
Hiển thị trạng thái
Sửa hàm prompt để hiện chữ nhỏ cho biết proxy đang bật. Nhìn dấu nhắc lệnh là biết lệnh sắp chạy có qua proxy hay không, tránh nhầm lẫn khi gỡ lỗi.
Bảo mật khi dùng PowerShell proxy
Script PowerShell thường được chia sẻ trong nhóm hay đưa lên kho mã. Thông tin proxy cần được bảo vệ.
Không ghi mật khẩu trong script
Mật khẩu proxy viết thẳng trong script sẽ lộ khi chia sẻ. Dùng Get-Credential khi chạy tay, dùng kho bí mật khi chạy tự động. Export-Clixml lưu PSCredential được mã hoá theo tài khoản Windows hiện tại, chỉ tài khoản đó trên máy đó giải mã được.
Cẩn thận với biến môi trường
Biến môi trường chứa mật khẩu proxy có thể bị tiến trình con đọc, hoặc in ra khi gỡ lỗi. Xoá biến khi không dùng, không in toàn bộ biến môi trường vào log.
Lịch sử lệnh
PowerShell lưu lịch sử lệnh vào tệp. Gõ mật khẩu proxy trực tiếp trong lệnh sẽ nằm lại trong lịch sử. Dùng Get-Credential thay vì gõ mật khẩu trong chuỗi URL.
Kiểm tra chứng chỉ
Không tắt kiểm tra chứng chỉ để "chữa" lỗi khi đi qua proxy công ty giải mã HTTPS. Thêm chứng chỉ gốc của công ty vào kho chứng chỉ của Windows theo hướng dẫn của bộ phận IT.
Kiểm tra PowerShell proxy đã hoạt động đúng
Sau khi cấu hình, kiểm tra theo vài bước để chắc lệnh thật sự đi qua proxy và không có cấu hình nào đè lên.
So IP trước và sau
Gọi Invoke-RestMethod tới một dịch vụ trả về IP khi chưa đặt proxy, ghi lại kết quả. Đặt proxy rồi gọi lại. Hai IP phải khác nhau, IP sau là IP của proxy. Nếu giống nhau, lệnh chưa đi qua proxy.
Kiểm tra cả HTTP và HTTPS
Gọi một địa chỉ HTTP và một địa chỉ HTTPS. Với biến môi trường, thiếu HTTP_PROXY hoặc HTTPS_PROXY sẽ làm một trong hai loại đi thẳng.
Kiểm tra trong phiên mới
Mở một cửa sổ PowerShell mới, chạy lại kiểm tra để chắc cấu hình trong profile được nạp đúng. Nhiều người đặt proxy trong phiên đang mở rồi tưởng đã cố định.
Kiểm tra dưới tài khoản chạy tác vụ
Với tác vụ theo lịch, chạy thử tác vụ một lần thủ công và xem log. Tài khoản dịch vụ có thể có cấu hình khác hẳn tài khoản người dùng.
Đo thời gian phản hồi
Measure-Command bọc quanh lệnh gọi web cho biết thời gian thực hiện. So sánh khi có và không có proxy để biết proxy làm chậm bao nhiêu. Proxy chậm bất thường nên được thay, các dấu hiệu nhận biết có trong bài proxy bị chậm.
PowerShell proxy và tệp PAC
Nhiều mạng doanh nghiệp không đặt một proxy cố định mà dùng tệp PAC để chọn proxy theo địa chỉ. PowerShell xử lý tệp PAC theo cách riêng.
PowerShell 5.1 tôn trọng PAC
Khi dùng proxy hệ thống, Windows PowerShell 5.1 đánh giá tệp PAC đã cấu hình trong cài đặt Internet, mỗi địa chỉ được gửi tới proxy mà PAC chỉ định hoặc đi thẳng.
PowerShell 7 với PAC
PowerShell 7 trên Windows cũng có thể dùng proxy hệ thống kèm PAC khi không có biến môi trường. Nếu đặt HTTPS_PROXY, biến sẽ được ưu tiên và PAC bị bỏ qua, có thể làm dịch vụ nội bộ bị gửi nhầm qua proxy.
Khi tự động phát hiện gặp lỗi
Windows tự dò proxy qua WPAD có thể chậm hoặc lỗi, làm lệnh web đầu tiên trong phiên mất vài giây. Nếu gặp thông báo không phát hiện được proxy, xem bài Windows could not automatically detect network proxy settings.
Ghi chép cấu hình cho cả nhóm
Nhóm quản trị dùng chung script nên có một trang ghi chép ngắn: proxy công ty là gì, cổng nào, dùng xác thực Windows hay tài khoản riêng, danh sách địa chỉ nội bộ cần đi thẳng, cách bật TLS 1.2 trên máy cũ. Thành viên mới đọc một lần là chạy được script, không phải hỏi lại. Ghi kèm phiên bản PowerShell mà script đã được thử, vì cách xử lý proxy giữa 5.1 và 7 khác nhau như đã nói ở đầu bài. Khi công ty đổi proxy, chỉ cần sửa một chỗ trong tài liệu và profile mẫu.
So sánh PowerShell proxy với ngôn ngữ khác
Môi trường |
Proxy mặc định |
Cách chỉ định |
|---|---|---|
PowerShell 5.1 |
Proxy hệ thống Windows |
-Proxy hoặc DefaultWebProxy |
PowerShell 7 |
Biến môi trường rồi proxy hệ thống |
-Proxy, biến môi trường, DefaultProxy |
C# HttpClient |
Tương tự PowerShell 7 |
HttpClientHandler.Proxy |
curl.exe |
Biến môi trường |
Tham số -x |
PowerShell 7 dùng chung nền .NET với C#, nên kiến thức proxy trong C# áp dụng được, xem bài C# HttpClient proxy.
Câu hỏi thường gặp về PowerShell proxy
Vì sao PowerShell 5.1 không đọc biến HTTP_PROXY
PowerShell 5.1 dựa trên .NET Framework, lấy proxy mặc định từ cài đặt Internet của Windows chứ không đọc biến môi trường. Dùng DefaultWebProxy hoặc tham số -Proxy.
Có cần chạy PowerShell với quyền quản trị để đặt proxy không
Không, với proxy cho phiên hiện tại. Chỉ cần quyền quản trị khi đổi cấu hình WinHTTP hoặc proxy cho toàn máy.
Đặt proxy trong PowerShell có ảnh hưởng trình duyệt không
Không, nếu chỉ đặt cho phiên bằng DefaultWebProxy hay biến môi trường. Chỉ khi sửa cài đặt proxy hệ thống trong registry mới ảnh hưởng trình duyệt.
PowerShell trên Linux dùng proxy thế nào
PowerShell 7 trên Linux, macOS đọc biến HTTP_PROXY, HTTPS_PROXY, NO_PROXY như các công cụ Linux khác, hoặc dùng tham số -Proxy.
Invoke-WebRequest chậm ở lần gọi đầu tiên
Lần gọi đầu trong phiên có thể chậm vài giây vì Windows dò proxy tự động hoặc tải tệp PAC. Các lần sau nhanh hơn nhờ bộ nhớ đệm. Nếu không cần tự động phát hiện, chỉ định proxy rõ ràng bằng -Proxy hoặc tắt tự động phát hiện trong cài đặt để bỏ độ trễ này.
Có dùng được proxy SOCKS5 trong PowerShell không
Windows PowerShell 5.1 không hỗ trợ SOCKS cho Invoke-WebRequest. PowerShell 7 trên .NET mới có hỗ trợ một phần. Cách ổn định nhất là gọi curl.exe với tham số -x socks5h://host:port ngay trong script PowerShell, hoặc dùng cổng HTTP của cùng proxy. Khác biệt giữa hai giao thức có trong bài proxy HTTP và SOCKS5.
Làm sao tắt proxy cho một lệnh khi phiên đã đặt proxy mặc định
PowerShell 7 dùng tham số -NoProxy. PowerShell 5.1 truyền tham số -Proxy là một đối tượng không dùng proxy, hoặc tạm đặt DefaultWebProxy về null rồi khôi phục sau lệnh. Thêm địa chỉ đó vào danh sách ngoại lệ là cách lâu dài hơn.
Tổng kết
PowerShell proxy có hai lối: chỉ định cho từng lệnh bằng -Proxy, -ProxyCredential, -ProxyUseDefaultCredentials, hoặc đặt mặc định cho phiên bằng DefaultWebProxy trên 5.1 và biến môi trường hay DefaultProxy trên 7. Cài module sau proxy công ty cần đặt proxy trước, bật TLS 1.2 và cập nhật PowerShellGet. Đọc cấu hình hệ thống bằng registry, GetSystemWebProxy và netsh winhttp khi gỡ lỗi. Cần proxy Việt Nam ổn định cho script tự động, anh em liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam để được tư vấn.