He usado el siguiente código para mostrar resultados JSON, pero ahora necesito cambiar el script para mostrar la salida en lugar de uno al lado del otro. He probado un script como el siguiente, pero parece que no puedo hacer lo que quiero.
Mi pregunta es :
Quiero eliminar ||antes del último corchete. if (shExpMatch(host, "*.lync.com") || shExpMatch(host, "*.teams.microsoft.com") || shExpMatch(host, "teams.microsoft.com") || ) Como resultado, seráif (shExpMatch(host, "*.lync.com") || shExpMatch(host, "*.teams.microsoft.com") || shExpMatch(host, "teams.microsoft.com")) 
Necesito cambiar el script para mostrar el resultado deseado en lugar de uno al lado del otro.
Aquí está mi guión:
    $result = Invoke-WebRequest "https://endpoints.office.com/endpoints/worldwide?noipv6&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7" $services = ConvertFrom-Json $result $likeFilter = "12"
    $services = $services | Where-Object { $_.id -like $likeFilter } 
    $urls = [System.Collections.ArrayList]@() $services
    
    
    
    
    function add_url($url){ if(!$urls.Contains($url)){ $urls.Add($url); } } foreach($service in $services){ foreach($url in $service.urls){ add_url($url);
    }
    }
    
    # OUTPUT
$txt_proxypacText += "// This PAC file will provide proxy config to Microsoft 365 services`r`n" $txt_proxypacText += "//  using data from the public web service for all endpoints`r`n"
$txt_proxypacText += "function FindProxyForURL(url, host)`r`n" $txt_proxypacText += "{`r`n"
$txt_proxypacText += "var direct = ""DIRECT"";`r`n" $txt_proxypacText += "var proxyServer = ""PROXY 10.11.12.13:8080"";`r`n"
$txt_proxypacText += "host = host.toLowerCase();`r`n" $txt_proxypacText += "if ("
foreach($url in $urls){
$txt_proxypacText += "shExpMatch(host, ""$url"") || "
}
$txt_proxypacText += ")`r`n" $txt_proxypacText += "{`r`n"
$txt_proxypacText += "`r`n return direct;" $txt_proxypacText += "`r`n}"
$txt_proxypacText += "`r`n return proxyServer;" $txt_proxypacText += "`r`n}"
 
    Salida:
// This PAC file will provide proxy config to Microsoft 365 services
//  using data from the public web service for all endpoints
function FindProxyForURL(url, host)
{
var direct = "DIRECT";
var proxyServer = "PROXY 10.11.12.13:8080";
host = host.toLowerCase();
if (shExpMatch(host, "*.lync.com") || shExpMatch(host, "*.teams.microsoft.com") || shExpMatch(host, "teams.microsoft.com") || )
{
 return direct;
}
 return proxyServer;
}
 
    Mi salida deseada:
// This PAC file will provide proxy config to Microsoft 365 services
//  using data from the public web service for all endpoints
function FindProxyForURL(url, host)
{
    var direct = "DIRECT";
    var proxyServer = "PROXY 10.11.12.13:8080";
    host = host.toLowerCase();
    if(shExpMatch(host, "*.lync.com")
        || shExpMatch(host, "*.teams.microsoft.com")
        || shExpMatch(host, "teams.microsoft.com"))
    {
        return direct;
    }
    return proxyServer;
}
                        Haría uso de Here-String con un conjunto de shExpMatch(..)líneas preformado . Usar eso también lo libera de duplicar comillas y concatenaciones de cadenas usando+=
# demo urls
$urls = "*.lync.com", "*.teams.microsoft.com", "teams.microsoft.com" $hostMatches = $(for ($i = 0; $i -lt $urls.Count; $i++) { $prefix = if ($i -eq 0) { '' } else { ' || '} '{0}shExpMatch(host, "{1}")'-f $prefix,  $urls[$i]
}) -join [Environment]::NewLine
$txt_proxypacText = @" // This PAC file will provide proxy config to Microsoft 365 services // using data from the public web service for all endpoints function FindProxyForURL(url, host) { var direct = "DIRECT"; var proxyServer = "PROXY 10.11.12.13:8080"; host = host.toLowerCase(); if ($hostMatches)
    {
        return direct;
    }
    return proxyServer;
}
"@
$txt_proxypacText
 
     Salida:
// Este archivo PAC proporcionará la configuración del proxy a los servicios de Microsoft 365
// usando datos del servicio web público para todos los puntos finales
función FindProxyForURL (url, host)
{
    var direct = "DIRECTO";
    var proxyServer = "PROXY 10.11.12.13:8080";
    host = host.toLowerCase ();
    si (shExpMatch (host, "* .lync.com")
        || shExpMatch (host, "* .teams.microsoft.com")
        || shExpMatch (host, "teams.microsoft.com"))
    {
        regreso directo;
    }
    return proxyServer;
}
 
     Como se solicitó, creo que la parte superior del código, donde se recopilan las URL en una lista de matrices, se puede hacer mucho más fácilmente.
Una nota antes: está utilizando una $likeFiltervariable con una cadena "12". 
En ese caso, probablemente podría utilizar mejor el -eqoperador en lugar del -likeoperador que tiene más uso para filtrar con comodines (es decir "12*").
Por ahora, supongo que solo desea obtener el servicio con id que coincida "12"exactamente.
$url = "https://endpoints.office.com/endpoints/worldwide?noipv6&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7" $filter = 12
# get an array of urls from the service(s) that get through the filter
$urls = ((Invoke-WebRequest $url | ConvertFrom-Json) | Where-Object { $_.id -eq $filter }).urls | Select-Object -Unique
                            # EXAMPLE prepare begin
$urls = @( 'microsoft.com', '*.microsoft.com', 'teams.microsoft.com', '*.teams.microsoft.com') # EXAMPLE prepare End $urlLines = $urls | ForEach-Object { return $_.Trim() } |
ForEach-Object { 
    if($_.StartsWith('*.')) { return "shExpMatch(host, '$($_)')" } else { return "host == '$($_)'" }} $innerIf = [String]::Join("`r`n" + (' ' * 8) + "|| ", $urlLines) #// $txt_proxypacText += "    if ($($innerIf))"
Write-Host "    if ($($innerIf))"
# Output:
# if (host == "microsoft.com"
#    || shExpMatch(host, "*.microsoft.com")
#    || host == "teams.microsoft.com"
#    || shExpMatch(host, "*.teams.microsoft.com"))
                            Tengo este - método de contador simple:
$counter = 0 foreach($url in $urls){ If ($counter -eq $urls.Count){ $txt_proxypacText += "shExpMatch(host, ""$url"") `r`n" }else{ $txt_proxypacText += "shExpMatch(host, ""$url"") || `r`n" } $counter++
}
 
     Probablemente necesite algunos arreglos con los caracteres de tabulación.
Jana Duggar ha sido abierta sobre su búsqueda del amor. Aquí está todo lo que ha dicho sobre el tema y su ventana de cinco años para el matrimonio.
La estrella de 'Outlander', Sam Heughan, reveló recientemente qué se llevará del set para recordar a Jamie Fraser, el papel que lo convirtió en una estrella.
'She Loves You' fue escrita en una hora, grabada en un día y fue la canción de The Beatles con una de las mejores interpretaciones de su carrera.
Dolly Parton y su abuela Bessie tenían una relación especial. La abuela Parton estaba muy enferma, pero eso no impidió que Dolly le hiciera una broma.
Puede que pienses que el roble o el nogal americano son maderas resistentes, pero cuando se trata de las maderas más duras del mundo, ni siquiera se acercan.
El océano rebosa belleza, pero también esconde algunas de las criaturas marinas más aterradoras del planeta. Muchos de estos animales acechan en las profundidades oceánicas, en el oscuro y opresivo mundo de alta presión del océano.
Si te enfrentas a monstruos hostiles o te preparas para combates PvP, conocer los mejores encantamientos para espadas en Minecraft puede darte una gran ventaja. Encantar espadas te permite infligir más daño, aumentar los objetos que sueltan los monstruos y prolongar la durabilidad de tu espada.
Cuando se habla de países socialistas, a menudo se imagina a la gente con un control estatal total y sin propiedad privada. Pero en la práctica, las economías socialistas varían enormemente.
                    “Children” lanza un cameo de renombre y algunas noticias devastadoras
                    Se dice que este RAV4 está en excelentes condiciones y preparado para un juego de sillas musicales.
                    Imágenes de drones capturaron a los bomberos que parecían tener dificultades para apagar el incendio.
                    Eyes of Wakanda se vincula directamente con la MCU, además de actualizaciones sobre X-Men '97, What If..., Daredevil y más.
El anillo de compromiso de Kate Middleton perteneció a la princesa Diana antes de que el príncipe William le propusiera matrimonio con él. Descubra todo lo que hay que saber sobre esta pieza histórica aquí.
John Cleese se casó con su esposa, Jennifer Wade, en 2012. Aquí encontrará todo lo que debe saber sobre la esposa de John Cleese, Jennifer Wade.
Patton Oswalt se casó con su esposa, la también actriz Meredith Salenger, en 2017. Aquí encontrará todo lo que debe saber sobre la esposa de Patton Oswalt, Meredith Salenger.
Aquí encontrará todo lo que debe saber sobre Lauren Scruggs Kennedy, la bloguera de moda y autora de best sellers del New York Times que espera su segundo hijo con la personalidad de televisión Jason Kennedy.
Me llama la atención De repente, como ocurre con tanta frecuencia Es el punto medio de nuevo <No, no el del Pacífico, tú, el del carnaval> Todos los titulares en voz alta...
                    En 2022, con el lanzamiento de GPT-3, la habilidad de escritura parece perder importancia. Con IA, las personas con mala escritura también pueden generar personal de calidad.
                    En el mundo acelerado y competitivo de hoy, la carrera de uno juega un papel importante en el crecimiento personal, la estabilidad financiera y la satisfacción general con la vida. Sin embargo, muchas personas se encuentran atrapadas en un ciclo implacable de estancamiento e insatisfacción, y su vida profesional se desvanece gradualmente.
                    La semana pasada noté un comunicado de prensa, enviado a través de PressGazette (un sitio web de noticias de los medios británicos). El artículo anunciaba que Acast, la empresa de publicidad y alojamiento de podcasts de Scandi, lideraría un consorcio de editores "probablemente los más influyentes" en podcasting.