0
votes

PowerShell - Format JSON au fichier PAC Convertir

J'ai utilisé le code suivant pour afficher les résultats JSON, mais il faut maintenant modifier le script pour afficher la sortie au lieu des côtés côte à côte. J'ai essayé un script comme ci-dessous, mais je ne peux pas que je ne puisse pas sembler le faire pour faire ce que je veux.

Ma question est la suivante:

  • Je veux supprimer || avant le dernier support. si (shexpmatch (hôte, "* .lync.com") || shexpmatch (hôte, "* .teams.microsoft.com") || shexpmatch (hôte, "équipes.microsoft.com") ||) ||) En conséquence, ce sera si (shexpmatch (hôte, "* .lync.com") || shexpmatch (hôte, "* .teams.microsoft.com") || shexpmatch (hôte, "Teams.Microsoft.com"))

  • Je dois modifier le script pour afficher la sortie de ma souhaité au lieu des côtés côte à côte.

    Voici mon script: xxx

    sortie: xxx

    ma sortie souhaitée: xxx


1 commentaires

shexpmatch (hôte, "équipes.microsoft.com") - Pourquoi utiliser ShexPMatch ici? Il suffit d'utiliser host == "équipes.microsoft.com"


3 Réponses :


0
votes
# 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"))

0 commentaires

0
votes

J'ai gagné cette méthode de compteur simple: xxx

a probablement besoin de quelques rangements avec les caractères d'onglet.


0 commentaires

0
votes

Je ferais l'utilisation d'une chaîne ici avec un ensemble préalable de shexpmatch (..) code> lignes. L'utilisation qui vous soulage également des citations de doublage et des concaténations à chaîne en utilisant + = code> xxx pré>

sortie: p> xxx pré>


Comme demandé, je pense que la partie supérieure du code, où vous collectez les URL dans une arracheListe peut être faite beaucoup plus facile. p>

une note avant: vous utilisez un daimfilter Variable avec une chaîne "12" code>.
Dans ce cas, vous pouvez probablement mieux utiliser l'opérateur -eq code> au lieu de l'opérateur -tri code> qui a plus d'utilisation pour filtrer avec des caractères génériques (c.-à-d. "12 *" code>). p>

Pour l'instant, je suppose que vous souhaitez obtenir uniquement le service avec l'identifiant correspondant au "12" code> exactement. P>

$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


2 commentaires

Merci Theo, j'ai une question. Je ne veux pas utiliser ces lignes `Fonction Add_url ($ URL) {if (! $ URLS.Contains ($ URL)) {$ URLS.Ajouter ($ URL); }} foreach ($ service en $ services) {foreach ($ URL en $ service.urls) {add_url ($ URL); }} `Y a-t-il un script alternatif? Que recommandes-tu?


@Arbelac S'il vous plaît voir la réponse modifiée. Avec cela, vous n'avez pas à jouer avec une arracheListe et vous n'avez pas besoin d'une fonction d'assistance. Acclamations!