Het BypassList-argument van System.Net.WebProxy bevat reguliere expressies. Een patroon zoals *.office.example is ongeldig omdat de leidende asterisk geen voorafgaande expressie heeft om te herhalen.

Voor HTTP- en HTTPS-verzoeken naar office.example en zijn subdomeinen kan een PowerShell-configuratie het volgende gebruiken:

$bypass = @('^https?://([a-z0-9-]+\.)*office\.example(:[0-9]+)?$')
$proxy = [System.Net.WebProxy]::new(
    'http://proxy.example:8080',
    $false,
    [string[]]$bypass
)

De geëscaleerde punten komen overeen met letterlijke punten. De herhaalde groep voor hostnamelabels staat zowel het basisdomein als namen eronder toe. De ankers houden een naam zoals office.example.other.test buiten deze regel. PowerShell-strings met enkele aanhalingstekens behouden de backslashes die de expressie gebruikt.

De huidige .NET-implementatie vergelijkt deze expressies met het schema, de hostnaam en de niet-standaardpoort van de bestemming. Ze omvat niet het aanvraagpad of de queryreeks. De optionele poortgroep staat daarom ook niet-standaardpoorten toe; verwijder of versmal die als het beleid een specifieke dienst vereist.

BypassProxyOnLocal is false in dit voorbeeld zodat het regex-beleid apart van die extra uitzonderingsinstelling kan worden bekeken. Koppel het resulterende proxyobject aan de HTTP-client die het moet gebruiken. Voor een toegestane openbare URL-test buiten het uitzonderingsdomein kan een HTTP-item uit de HTTP proxy list het adres leveren, zonder geconfigureerd proxyaccount.

Gebruik IsBypassed met representatieve Uri-waarden om de routeringsbeslissing te bekijken: het basisdomein, één subdomein, een niet-verwante externe host en een misleidend langer achtervoegsel. Een true-resultaat betekent dat directe toegang is gekozen; het bewijst niet dat de directe bestemming bereikbaar is.

Gerelateerde artikelen