????

Your IP : 18.221.85.236


Current Path : C:/Windows/System32/WindowsPowerShell/v1.0/Modules/WinHttpProxy/
Upload File :
Current File : C:/Windows/System32/WindowsPowerShell/v1.0/Modules/WinHttpProxy/WinHttpProxy.psm1

#########################################################################
# Winhttp Proxy
#########################################################################

<#
    .Synopsis
    Displays current WinHTTP proxy setting.

    .Description
    Displays current WinHTTP proxy setting.

    .Parameter Default
    Displays current WinHTTP default proxy settings.

    .Parameter Advanced
    Displays current WinHTTP advanced proxy settings.
#>
function Get-WinhttpProxy
{
    param
    (
        [parameter(mandatory, parametersetname="Default")]
        [switch]
        $Default,

        [parameter(mandatory, parametersetname="Advanced")]
        [switch]
        $Advanced
    )

    if ($Default)
    {
        netsh winhttp show proxy
    }

    if ($Advanced)
    {
        $line1, $line2, $line3, $JsonLines = netsh winhttp show advproxy
        Write-Output $line1, $line2, $line3

        $Json = ConvertFrom-Json (-Join $JsonLines)

        if ($Json.ConnectionName)
        {
            Write-Output ("Connection name: " + $Json.ConnectionName)
        }

        if ($Json.Proxy)
        {
            Write-Output ("Proxy: " + $Json.Proxy)
        }

        if ($Json.ProxyBypass)
        {
            Write-Output ("ProxyBypass: " + $Json.ProxyBypass)
        }

        if ($Json.AutoconfigUrl)
        {
            Write-Output ("AutoconfigUrl: " + $Json.AutoconfigUrl)
        }

        if ($Json.PSobject.Properties.name -match "AutoDetect")
        {
            Write-Output ("AutoDetect: " + $Json.AutoDetect)
        }
    }
}

<#
    .Synopsis
    Exports the current Winhttp proxy configuration.

    .Description
    Creates a script that contains the current configuration.
    If saved to a file, this script can be used to restore altered configuration settings.
#>
function Export-WinhttpProxy
{
    netsh winhttp dump proxy
}

<#
   .Synopsis
   Resets WinHTTP proxy settings.

   .Description
   Resets WinHTTP proxy settings.

   .Parameter Auto
   Resets WinHTTP proxy autodiscovery service.

   .Parameter Direct
   Resets WinHTTP proxy setting to DIRECT.
#>
function Reset-WinhttpProxy
{
    param
    (
        [parameter(mandatory, parametersetname="Auto")]
        [switch]
        $Auto,

        [parameter(mandatory, parametersetname="Direct")]
        [switch]
        $Direct
    )

    if ($Auto)
    {
        netsh winhttp reset autoproxy
    }

    if ($Direct)
    {
        netsh winhttp reset proxy
    }
}

<#
    .Synopsis
    Imports WinHTTP proxy settings.

    .Description
    Imports WinHTTP proxy settings.

    .Parameter Source
    from where the setting is imported. Accepted values:
        IE - Imports proxy setting from IE.
#>
function Import-WinhttpProxy
{
    param
    (
        [parameter(Mandatory=$true)]
        [ValidateSet("IE")]
        [string]
        $Source
    )

    netsh winhttp import proxy ie
}

<#
    .Synopsis
    Configures WinHTTP proxy settings.

    .Description
    Configures WinHTTP proxy settings.
#>
function Set-WinhttpProxy
{
    param
    (
        [parameter(mandatory, position=0, parametersetname="Default")]
        [string]
        $ProxyServer,

        [parameter(position=1, parametersetname="Default")]
        [string]
        $BypassList,

        [parameter(mandatory, position=0, parametersetname="Advanced")]
        [ValidateSet("User", "Machine")]
        [string]
        $SettingScope,

        [parameter(parametersetname="Advanced")]
        [string]
        $Proxy,

        [parameter(parametersetname="Advanced")]
        [string]
        $ProxyBypass,

        [parameter(parametersetname="Advanced")]
        [string]
        $AutoconfigUrl,

        [parameter(parametersetname="Advanced")]
        [switch]
        $AutoDetect
    )

    switch ($PSCmdlet.ParameterSetName)
    {
        "Default"
        {
            if ($PSBoundParameters.ContainsKey('BypassList'))
            {
                netsh winhttp set proxy proxy-server=$ProxyServer bypass-list=$BypassList
            }
            else
            {
                netsh winhttp set proxy proxy-server=$ProxyServer
            }
        }

        "Advanced"
        {
            $Settings = @{}

            if ($PSBoundParameters.ContainsKey('Proxy'))
            {
                $Settings.Proxy = $Proxy
            }

            if ($PSBoundParameters.ContainsKey('ProxyBypass'))
            {
                $Settings.ProxyBypass = $ProxyBypass
            }

            if ($PSBoundParameters.ContainsKey('AutoconfigUrl'))
            {
                $Settings.AutoconfigUrl = $AutoconfigUrl
            }

            $Settings.AutoDetect = $False
            if ($AutoDetect)
            {
                $Settings.AutoDetect = $True
            }

            $SettingsString = (ConvertTo-Json -Compress $Settings).replace('"', '\"')

            $Output = netsh winhttp set advproxy setting-scope=$SettingScope settings=$SettingsString

            Get-WinhttpProxy -Advanced
        }
    }
}