我想尝试使用脚本(我从另一个网站获取)在我们的公司电脑上设置带有例外列表的代理服务器 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 控制台运行该脚本。