Powershell 解析对象/字符串

Powershell 解析对象/字符串

学习 powershell,尝试找出如何解析该结果集中的第一个值:

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

Powershell通常我只是查找它,但是,我不知道 {x, x} 是否是土地中的标准数据类型。

我是否必须进行粗略的字符串解析,或者是否有一些标准命令来提取第一个,例如:

... | 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

您的结果集是某种类型的集合。cmdletSelect-Object会提取该集合中的第一个项目,然后筛选出仅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

或者你可以使用属性取消引用运算符和\或索引为残废蓝精灵建议

相关内容