powershell 将多个通配符与-like运算符一起使用

mzillmmw  于 2023-05-17  发布在  Shell
关注(0)|答案(2)|浏览(128)

我正在尝试解析netsh winhttp show proxy的输出,以确保我的脚本应用了正确的代理设置。首先,这是命令的预期输出:

Current WinHTTP proxy settings:

    Proxy Server(s) :  proxy.website.com:8080
    Bypass List     :  *.example1.com;*.sample-site.com;

下面是我正在做的事情的简化版本。if语句在应该为真的时候计算为false(我知道在运行之前代理设置是正确的)。我怀疑在-like运算符中使用多个通配符的方式有问题,因为只在$ProxyServer$BypassListEscaped自己的工作中计算,但我不确定。有什么想法吗?谢谢!

$NetshOutput = (netsh winhttp show proxy)

$ProxyServer = "proxy.website.com:8080"
$ProxyBypass = "*.example1.com;*.sample-site.com;"

$BypassListEscaped = $ProxyBypass.Replace("*", "``*").Replace("`"", "")

if ($NetshOutput -like "*$ProxyServer*$BypassListEscaped*"){
    Write-Host "correct"
}else{
    Write-Host "incorrect"
}
fcg9iug3

fcg9iug31#

netsh命令的输出是一个字符串数组,您需要在比较之前将该数组转换为单个字符串。您也可以使用WildcardPattern.Escape method来转义通配符。

$NetshOutput = (netsh winhttp show proxy) -join [System.Environment]::NewLine
$ProxyServer = 'proxy.website.com:8080'
$ProxyBypass = [WildcardPattern]::Escape('*.example1.com;*.sample-site.com;')

if($NetshOutput -like "*$ProxyServer*$ProxyBypass*") {
    Write-Host 'correct'
}
else {
    Write-Host 'incorrect'
}
ddarikpa

ddarikpa2#

试试这个:
$output = netsh winhttp show proxy $output -like“Proxy Server:-and$output -like“”

相关问题