2 Pluspunkte 0 Minuspunkte

Ich habe ein Array aus Objekten und jedes Objekt hat ein Property "url".

$jsonString = @"
{
  "references": [
    {
      "url": "http://nginx.net/CHANGES",
      "source": "cret@cert.org",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    },
    {
      "url": "http://nginx.net/CHANGES-0.5",
      "source": "cret@cert.org",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    },
    {
      "url": "http://nginx.net/CHANGES-0.6",
      "source": "cret@cert.org",
      "tags": [
        "Release Notes",
        "Vendor Advisory"
      ]
    }
  ]
}
"@

Wie kann ich in Powershell jeweils das Property "url" jedes Objekts zu einem String zusammenfügen?

$jsonObject = $jsonString | ConvertFrom-Json
$urls = $jsonObject.references | Select-Object -ExpandProperty url -join "; "
$urls

Als Fehler kommt das:

Select-Object : Es wurde kein Parameter gefunden, der dem Parameternamen "join" entspricht.

In Zeile:36 Zeichen:68
+ ... $jsonObject.references | Select-Object -ExpandProperty url -join "; "
+                                                                ~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Select-Object], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Der -join Operator kann nicht direkt nach Select-Object verwendet werden. Stattdessen kannst du einfach die URLs extrahieren und mit dem -join Operator in einer separaten Anweisung zusammenfügen.

$jsonObject = $jsonString | ConvertFrom-Json
$urls = $jsonObject.references | Select-Object -ExpandProperty url
$urlsString = $urls -join "; "
$urlsString
von (1.2k Punkte)