当前位置:   article > 正文

PowerShell中使用代理服务_powershell 代理

powershell 代理

PowerShell中使用代理服务

在PowerShell中使用Update-Help Invoke-WebRequest https://woshub.com Find-Module modulename网络请求命令的时候会出现无法连接到服务器的错误,这时我们可以使用代理服务来解决这个问题。

  1. 检查当前系统代理设置

    netsh winhttp show proxy
    
    • 1
  2. 设置代理服务

    # 设置代理的两种方式
    # 1. 导入windows(Internet Explorer)中的代理设置
    netsh winhttp import proxy source=ie
    # 2. 或者手动设置代理
    netsh winhttp set proxy "127.0.0.1:8889"
    # 2.1 设置的时候可以指定IP地址或网站不使用代理(设置bypass-list)
    netsh winhttp set proxy "127.0.0.1:8889" bypass-list="10.*,172.*,192.168.*,*.corp.woshub.com"
    # 2.2 可以通过下面的命令检查指定的URL是否通过代理连接
    ([System.Net.WebRequest]::GetSystemWebproxy()).IsBypassed("https://woshub.com")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  3. 认证代理服务器
    针对连接代理服务器需要认证,有两种方式:一种是使用Windows SSO,另一种是指定用户认证证书

    # 1. 使用Windows SSO
    $Wcl=New-Object System.Net.WebClient
    $Wcl.Headers.Add("user-agent", "PowerShell Script")
    $Wcl.Proxy.Credentials= System.Net.CredenticalCache]::DefaultNetworkCredentials
    # 2. 指定用户认证证书
    $Wcl=New-Object System.Net.WebClient
    $Creds=Get-Credential
    $Wcl.Proxy.Credentials=$Creds
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  4. 为PowerShell Core配置代理连接
    在新版本的PowerShell Core(6.x, 7.x)中使用System.Net.HttpClient类代替了原来的System.Net.WebRequest类来执行网络请求,因此配置命令变成如下:

    # 设置代理
    [System.Net.Http.HttpClient]::DefaultProxy = New-Object System.Net.WebProxy('http://your-proxy:3128')
    # 设置代理服务器认证
    [System.Net.Http.HttpClient]::DefaultProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
    [System.Net.Http.HttpClient]::DefaultProxy.Credentials = Get-Credential
    
    • 1
    • 2
    • 3
    • 4
    • 5
  5. PowerShell Core还支持通过特定的Windows环境变量来设置代理

    $proxy='http://127.0.0.1:8889'
    $ENV:HTTP_PROXY=$proxy
    $ENV:HTTPS_PROXY=$proxy
    # 带认证的proxy(不安全)
    $proxy='http://username:password@127.0.0.1:8889'
    # 检查代理环境变量
    Dir env:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  6. 在PowerShell配置文件中设置代理
    将下面的内容存入的PowerShell的配置文件中

    # Force PowerShell to use TLS 1.2 for connections
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    [system.net.webrequest]::DefaultWebProxy = new-object system.net.webproxy('http://127.0.0.1:8889')
    # If you need to import proxy settings from Internet Explorer, you can replace the previous line with the: "netsh winhttp import proxy source=ie"
    [system.net.webrequest]::DefaultWebProxy.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    # You can request user credentials:
    # System.Net.WebRequest]::DefaultWebProxy.Credentials = Get-Credential
    # Also, you can get the user password from a saved XML file (see the article “Using saved credentials in PowerShell scripts”):
    # System.Net.WebRequest]::DefaultWebProxy= Import-Clixml -Path C:\PS\user_creds.xml
    [system.net.webrequest]::DefaultWebProxy.BypassProxyOnLocal = $true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    默认情况下PowerShell脚本的执行策略是不允许执行脚本,需要进行下面的设置

    Set-ExecutionPolicy RemoteSigned
    
    • 1

    最后保存配置文件,重启PowerShell终端。

  7. 在当前PowerShell中查看代理服务设置

    Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyServer, ProxyEnable
    # 获取WebProxy设置
    [System.Net.WebProxy]::GetDefaultProxy()
    # 开启代理
    Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' ProxyEnable -value 1
    # 关闭代理
    Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' ProxyEnable -value 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  8. windows sublinux - ubuntu配置代理

    #!/bin/bash
    nameserver=`cat /etc/resolv.conf  | grep nameserver | awk '{print $2}'`
    #echo "nameserver: ${nameserver}"
    export HTTP_PROXY=http://${nameserver}:8889
    #echo "http proxy: ${HTTP_PROXY}"
    export HTTPS_PROXY=${HTTP_PROXY}
    #echo "https proxy: ${HTTPS_PROXY}"
    
    aptproxy="Acquire::http::Proxy \"http://${nameserver}:8889\";"
    #echo "apt proxy: ${aptproxy}"
    echo ${aptproxy} > /etc/apt/apt.conf.d/proxy.conf
    # hostname -I # 获取IP地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/593924
推荐阅读
相关标签
  

闽ICP备14008679号