在Powershell中解析字符串

时间:2015-05-03 22:13:27

标签: powershell

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

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

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

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

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

(我刚刚把选择字符串组成部分。我迷路了。)

4 个答案:

答案 0 :(得分:5)

这很可能是包含数组的对象的1属性的结果。您看到的输出已经过风格化以用于显示目的,因此它不是您需要解析的字符串。假设您的对象为IPAddresses,您应该可以执行以下任一操作:

$obj

答案 1 :(得分:0)

一种解决方案是使用split函数将字符串转换为数组,并在下一步中使用它:

  1. 使用split函数将字符串拆分为数组(逗号是项目分隔符)。
  2. 抓住数组的第一项(或任何需要的东西),然后对其进行消毒(删除不必要的花括号)。
  3. 以下示例:

    $str = "{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}"
    
    $strArr = $str.Split(",")
    
    Write-Host $strArr[0].Replace("{", "")
    

答案 2 :(得分:0)

这就是我最终做的事情:

$str = ... | Select-Object IPAddresses | ForEach {$_.IpAddresses}
Write-Host $str[0]

答案 3 :(得分:0)

根据IP地址的来源,这可能不是最佳选择。您可能会为每个设备获得多个IP地址。

您可能希望将两种方法结合起来:

$str = ... | Select-Object -ExpandProperty IPAddresses | Select-Object -First 1

这将返回每个设备列表中的第一个IP地址。