Powershell解析物件/字串

Powershell解析物件/字串

學習 powershell,試著找出如何解析此結果集中的第一個值:

IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}

通常我只會查找它,但是,我不知道 {x, x} 是否是陸地上的標準資料類型Powershell

我是否必須進行粗略的字串解析,或者是否有一些標準命令來提取第一個字串,例如:

... | Select-Object IPAddresses | Select-String [0]

(我剛剛完成了選擇字串部分。我迷路了。)

答案1

這是我到目前為止所擁有的:

... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]

返回第一個。

答案2

試試這樣:

$myResultSet | foreach { $_.IPAddresses[0] }

答案3

嘗試

$myResultSet | Select-Object -First 1 IPAddress

您的結果集是某種類型的集合。該Select-Objectcmdlet 取得該集合中的第一項,然後過濾到僅IPAddress顯示的屬性。

在我的機器上,上述命令的輸出如下所示。您的地址可能會有所不同,因為回傳的地址會有所不同

IPAddress                                                                                                              
---------                                                                                                              
fe80::5581:4fbc:fc22:ec79%13                                                                                           

您將獲得該表,因為預設情況下 PowerShell 會透過輸出Format-Table進行良好的顯示。

要僅存取 IP 位址本身,您可以稍微修改表達式:

$myResultSet.IPAddress|Select-Object -First 1

或者,透過使用點表示法和集合索引,您可以Select-Object完全避免使用,如下所示:

$myResultSet[0].IPAddress

上面直接引用了集合IPAddress中第一項的屬性$myResultSet,它的索引為零,因此$myResultSet[0]

其中任何一個只會傳回 IP 位址本身,如下所示:

fe80::5581:4fbc:fc22:ec79%13

答案4

首先,您不必猜測IPAddresses是什麼類型,您可以像這樣輕鬆獲得它:

$myResultSet[0].IPAddresses.GetType()

可能會是某種集合(數組),因此您可以Select-ObjectExpandProperty參數一起使用:

$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1

或者你可以使用屬性解引用運算符和/或索引為殘廢小莫夫建議

相關內容