设置代理设置和代理身份验证

时间:2014-03-06 13:34:36

标签: windows internet-explorer powershell proxy

我是PowerShell的新手,每次去大学时我都厌倦了改变proxy settingsproxy authentication,有没有办法使用PowerShell命令来做到这一点,比如使用PowerShell脚本输入代理地址和端口以及身份验证,而不是使用图形窗口InternetOptions>Connections>LanSettings(我假设存在),如果是,我该怎么办呢?

我搜索了网络和StackOverflow,但我得到了不同的答案,并没有针对我想要的目标。

1 个答案:

答案 0 :(得分:1)

我很感兴趣,所以我写了一篇应该有所帮助的POSH CmdLet。通过搜索谷歌有很多参考资料,如何做到这一点,所以信息就在那里。我发现的大多数解决方案都不符合标准的Powershell编码惯例,所以我无法自拔。试试吧。这对“自动检测设置”没有任何作用。你自己就是那个人。但是,这会启用/禁用代理设置:

function Modify-ProxySettings() {
    [CmdLetBinding(SupportsShouldProcess=$True)]
    Param (
        [Parameter(Mandatory=$False)][String]$Proxy,
        [Parameter(Mandatory=$False)][String]$Port,
        [ValidateSet("Disable","Enable")]
        [Parameter(Mandatory=$True)][String]$Action
    )
    Begin {
        $RegKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
        if ($Action.Equals("Enable") -and ([String]::IsNullOrEmpty($Proxy) -and [String]::IsNullOrEmpty($Port))) {
            throw New-Object System.Exception "Proxy and Port must be defined when enabling"
        }
    }
    Process {
        if ($Action.Equals("Enable")) {
            Set-ItemProperty -Path $RegKey -Name ProxyEnable -Value 1 
            Write-Verbose -Message "Set: $RegKey\ProxyEnable to Enabled(1)"
            Set-ItemProperty -Path $RegKey -Name ProxyServer -Value "$Proxy`:$Port"
            Write-Verbose -Message "Set: $RegKey\ProxyServer to $Proxy`:$Port"
            Write-Host "Proxy Enabled with $Proxy`:$Port"
        } elseif ($Action.Equals("Disable")) {
            Set-ItemProperty -Path $RegKey -Name ProxyEnable -Value 0
            Write-Verbose -Message "Set: $RegKey\ProxyEnable to Disabled(0)"
            Set-ItemProperty -Path $RegKey -Name ProxyServer -Value ""
            Write-Verbose -Message "Proxy server and port removed"
            Write-Host "Proxy Disabled" 
        }
    }
}

用法:

Modify-ProxySettings -Action Disable #Disables

Modify-ProxySettings -Action Enable -Proxy someproxy.com -Port 1337 #Enables

一些验证捕获:

  • 操作是强制性的,只需“禁用”或“启用”。为简单起见,请使用制表符完成
  • 如果选择“启用”,则需要代理和端口