Ich lerne Powershell und versuche herauszufinden, wie der erste Wert aus diesem Ergebnissatz analysiert wird:
IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}
Normalerweise würde ich es einfach nachschlagen, ich weiß jedoch nicht, ob {x, x} eine Art Standarddatentyp in Powershell
Land ist.
Muss ich eine grobe Zeichenfolgenanalyse durchführen oder gibt es einen Standardbefehl zum Extrahieren des ersten, etwa:
... | Select-Object IPAddresses | Select-String [0]
(Ich habe gerade den Teil mit der Zeichenfolgenauswahl erfunden. Ich bin ratlos.)
Antwort1
Das habe ich bisher:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
Gibt den ersten zurück.
Antwort2
Versuchen Sie es folgendermaßen:
$myResultSet | foreach { $_.IPAddresses[0] }
Antwort3
Versuchen
$myResultSet | Select-Object -First 1 IPAddress
Ihr Ergebnissatz ist eine Sammlung irgendeines Typs. Das Select-Object
Cmdlet nimmt das erste Element in dieser Sammlung und filtert dann nur die IPAddress
Eigenschaft heraus, die dann angezeigt wird.
Auf meinem Rechner sieht die Ausgabe des obigen Befehls so aus. Ihr Rechner wird wahrscheinlich anders sein, da die zurückgegebene Adresse anders ist
IPAddress
---------
fe80::5581:4fbc:fc22:ec79%13
Sie erhalten die Tabelle, weil PowerShell die Ausgabe standardmäßig durchleitet, Format-Table
um eine schöne Anzeige zu erstellen.
Um nur auf die IP-Adresse selbst zuzugreifen, können Sie den Ausdruck leicht ändern:
$myResultSet.IPAddress|Select-Object -First 1
oder Sie können die Verwendung vollständig vermeiden, indem Sie die Punktnotation und einen Index in der Sammlung verwenden, und Select-Object
zwar folgendermaßen:
$myResultSet[0].IPAddress
Das Obige bezieht sich direkt auf die IPAddress
Eigenschaft des ersten Elements in der $myResultSet
Sammlung, das einen Index von Null hat, daher$myResultSet[0]
Beide geben nur die IP-Adresse selbst zurück, wie folgt:
fe80::5581:4fbc:fc22:ec79%13
Antwort4
Erstens müssen Sie nicht raten, um welchen Typ IPAddresses
es sich handelt. Sie können ihn ganz einfach wie folgt ermitteln:
$myResultSet[0].IPAddresses.GetType()
Wahrscheinlich wird es eine ArtSammlung (Array), Sie können also Select-Object
mit ExpandProperty
dem Parameter verwenden:
$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1
Oder Sie verwendenEigenschaftsdereferenzierungsoperatorund\oder Index alsVerkrüppelter Schlumpfempfohlen