Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何从字符串中获取2个值_Powershell - Fatal编程技术网

Powershell 如何从字符串中获取2个值

Powershell 如何从字符串中获取2个值,powershell,Powershell,我希望有人能帮助我从哪里开始,我想从一些更大的数据中提取一些数据 我的数据如下所示: IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.48.1 = STRING: 36:b:7:0:41:31 IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.49.21 = STRING: 3b:fa:a2:us:74:d9 IP-MIB::ipNetToMediaPhysAddress.13600001.10.3.50.22

我希望有人能帮助我从哪里开始,我想从一些更大的数据中提取一些数据 我的数据如下所示:

IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.48.1 = STRING: 36:b:7:0:41:31
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.49.21 = STRING: 3b:fa:a2:us:74:d9
IP-MIB::ipNetToMediaPhysAddress.13600001.10.3.50.22 = STRING: 3b:fa:a2:us:7b:f3
每行都有一个以10开头的IP地址。最后的mac地址,这就是我想要的。 我一直在谷歌上搜索,不知道从哪里开始/做什么。 Regex是一个好方法,还是有更好的方法,任何例子都将不胜感激。
提前感谢

这里有一种获取信息的方法。。。[咧嘴笑]

  • 文本文件中的假读取
    您很可能希望使用
    Get Content
    或一些预先存在的集合
  • 遍历集合
  • 使用命名的捕获组正则表达式在IP和MAC上进行匹配
  • 从匹配数据创建PSCustomObject
    您可以从
    $Matches
    自动变量中获取它们
  • 发送当前对象以由$Results变量收集
  • 显示该集合
这是密码

# fake reading in a text file
#    in real life, use Get-Content
$InStuff = @'
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.48.1 = STRING: 36:b:7:0:41:31
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.49.21 = STRING: 3b:fa:a2:us:74:d9
IP-MIB::ipNetToMediaPhysAddress.13600001.10.3.50.22 = STRING: 3b:fa:a2:us:7b:f3
'@ -split [environment]::NewLine

$Results = foreach ($IS_Item in $InStuff)
    {
    $Null = $IS_Item -match '\.\d{8}\.(?<IPv4>.+) = .+: (?<MacAddress>.+)$'
    [PSCustomObject]@{
        IPv4 = $Matches.IPv4
        MacAddress = $Matches.MacAddress
        }
    }

$Results
#在文本文件中假读
#在现实生活中,使用获取内容
$InStuff=@'
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.48.1=字符串:36:b:7:0:41:31
IP-MIB::ipNetToMediaPhysAddress.13600001.10.4.49.21=字符串:3b:fa:a2:us:74:d9
IP-MIB::ipNetToMediaPhysAddress.13600001.10.3.50.22=字符串:3b:fa:a2:us:7b:f3
'@-split[environment]::换行符
$Results=foreach($InStuff中的项目)
{
$Null=$IS\u Item-match'\.\d{8}\.(?。+)=.+:(?。+)$'
[PSCustomObject]@{
IPv4=$Matches.IPv4
MacAddress=$Matches.MacAddress
}
}
$Results

您可以使用
导出CSV
将其发送到结构良好的CSV文件

非常感谢Lee,非常感谢,我想你可以向我解释regex,至少在你提供的例子中是这样,还是很难理解?@Bill-非常欢迎你!我不太擅长解释正则表达式,所以我建议您访问此站点…//到那里,将regex模式粘贴到中间的顶部框中[不带周围的单引号],最右边的
解释
框将显示每个步骤的功能。//如果您想看到它的实际效果,还可以将样本粘贴到中间的第二个框中。[咧嘴笑]