如何运行 Powershell 函数

如何运行 Powershell 函数

我想尝试使用脚本(我从另一个网站获取)在我们的公司电脑上设置带有例外列表的代理服务器 abcd.com.th 8080,但我不知道如何运行它。我将其保存为 .ps1 文件并运行它,但它似乎不起作用。请帮忙。

## http://woshub.com/using-powershell-behind-a-proxy/

function Set-Proxy ( $server,$port)
{
If ((Test-NetConnection -ComputerName $server -Port 
$port).TcpTestSucceeded) {
Set-ItemProperty -Path 
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -name 
ProxyServer -Value "$($server):$($port)"
Set-ItemProperty -Path 
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -name 
ProxyEnable -Value 1
}
Else {
Write-Error -Message "Invalid proxy server address or port:  
$($server):$($port)"
}
}
Set-Proxy abcd.com.th 8080

$ProxyExceptionList = 
"*.dh;*.gdmu;*.muarg;10.13.*;10.109.*;10.133.*;*.ehr2.com;
*.cldpaast1.ha.org.mu;cims-adi-app-cims-dmz-sit.ha.org.mu"

$ProxyProperty = Get-ItemProperty 
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
If ($ProxyProperty.ProxyOverride) {

$OldValue = $ProxyProperty.ProxyOverride

$NewValue = $OldValue+$ProxyExceptionList

$ProxyProperty | Set-ItemProperty -Name ProxyOverride -Value $NewValue

} else {

Write-Warning "List of proxy overrides is empty!"

}

## Enable Proxy Connection
##Set-ItemProperty -Path 
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' 
ProxyEnable -value 1

答案1

如果您将其放入脚本中并运行它,它将运行代码并且它需要的一切都将被执行。

它不起作用意味着这个脚本无法解决您的问题。因此,无论您遇到的根本问题是什么,这个脚本都不是答案。

如果运行脚本后出现错误,请记下错误以便我们帮助您解决问题。

答案2

正如发布的那样,脚本可能已损坏,因此导致您失败。

切勿从任何位置复制/粘贴/运行代码,除非您试图了解它在做什么,并在隔离的测试环境中执行此操作,以防止/限制任何负面影响。通常您需要重新格式化代码,删除不可打印/不可见的额外字符、随机空格等。

正如其他人所指出的,功能必须完全加载/激活后才能使用它们。

因此,稍微清理一下这个脚本,以显示我的意思(重构工作很小):

### http://woshub.com/using-powershell-behind-a-proxy/

function Set-Proxy
{
    <#
    .Synopsis
       Short description
    .DESCRIPTION
       Long description
    .EXAMPLE
       Example of how to use this cmdlet
    .EXAMPLE
       Another example of how to use this cmdlet
    #>

    [CmdletBinding(SupportsShouldProcess)]
    [Alias('snp')]

    Param
    (
        $server, 
        $port
    )

    If ((Test-NetConnection -ComputerName $server -Port $port).TcpTestSucceeded) 
    {
        Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyServer -Value "$($server):$($port)"
        Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name  ProxyEnable -Value 1
    }
    Else {Write-Error -Message "Invalid proxy server address or port: $($server):$($port)" }
}

Set-Proxy -server 'abcd.com.th' -port '8080'

$ProxyExceptionList = '*.dh;*.gdmu;*.muarg;10.13.*;10.109.*;10.133.*;*.ehr2.com;*.cldpaast1.ha.org.mu;cims-adi-app-cims-dmz-sit.ha.org.mu'
$ProxyProperty      = Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings'

If ($ProxyProperty.ProxyOverride) 
{
    $OldValue = $ProxyProperty.ProxyOverride
    $NewValue = $OldValue+$ProxyExceptionList

    $ProxyProperty | 
    Set-ItemProperty -Name ProxyOverride -Value $NewValue
} 
Else {Write-Warning -Message 'List of proxy overrides is empty!'}

## Enable Proxy Connection

为什么要注释掉这个代码???——下面的代码无效,不会运行。

##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 1

只要您从 ISE 或 VSCode 等运行它,它就应该可以正常工作,但正如“Abraham Zinala”的反馈所指出的那样;您将需要完全有资格从任何 CLI 控制台运行该脚本。

相关内容