Powershell – 将文本字段转换为对象

Powershell – 将文本字段转换为对象,第1张

概述我试图找到一种优雅的方式将下面的数据转换为Power shell对象的集合,但不幸的是我无法找到一种简单的方法.有人能帮助我吗? Name: ENC1 IPv4 Address: 172.16.2.101 Link Settings: Forced, 100 Mbit, Full Duplex Name: ENC2 IPv4 Address: 172.16.2.103 Link Settings: 我试图找到一种优雅的方式将下面的数据转换为Power shell对象的集合,但不幸的是我无法找到一种简单的方法.有人能帮助我吗?

name: ENC1
IPv4 Address: 172.16.2.101
link Settings: Forced,100 Mbit,Full Duplex
name: ENC2
IPv4 Address: 172.16.2.103
link Settings: Forced,Full Duplex
name: ENC3
IPv4 Address: 172.16.2.103
link Settings: Forced,100 Mbps,Full Duplex
name: ENC4
IPv4 Address: 172.16.2.104
link Settings: Forced,Full Duplex

这就是我提出的.

$out = @()
$text = Get-Content input.txt
$count = 0
do {
$line = ($text | select -Skip $count -first 3)
$obj = “” | Select name,IP,Settings
$obj.name = $line[0].split(“:”)[1]
$obj.IP = $line[1].split(“:”)[1]
$obj.Settings = $line[2].split(“:”)[1]
$out += $obj
$count = $count+3
}
until ($count -eq $text.count)
$out

这样做有简单的方法吗?

解决方法 使用开关:

$data = (@'name: ENC1 IPv4 Address: 172.16.2.101 link Settings: Forced,Full Duplex name: ENC2 IPv4 Address: 172.16.2.103 link Settings: Forced,Full Duplex name: ENC3 IPv4 Address: 172.16.2.103 link Settings: Forced,Full Duplex name: ENC4 IPv4 Address: 172.16.2.104 link Settings: Forced,Full Duplex'@).split("`n") |foreach {$_.trim()}Switch -Regex ($data) { '^name: (.+)' {$obj = [PSCustomObject]@{name=$Matches[1];IP=$null;Settings=$null}} '^IPv4 Address: (.+)' {$obj.IP = $matches[1]} '^link Settings: (.+)' {$obj.Settings = $Matches[1];$obj}}name                                 IP                                   Settings                            ----                                 --                                   --------                            ENC1                                 172.16.2.101                         Forced,Full Duplex       ENC2                                 172.16.2.103                         Forced,Full Duplex       ENC3                                 172.16.2.103                         Forced,Full Duplex       ENC4                                 172.16.2.104                         Forced,Full Duplex

编辑:经过一番考虑后,我觉得我更喜欢这种模式:

$DefValue = 'Parse error. Check input.'Switch -Regex ($data) { '^name: (.+)' {$obj;$obj = [PSCustomObject]@{name=$Matches[1];IP=$DefValue;Settings=$DefValue}} '^IPv4 Address: (.+)' {$obj.IP = $matches[1]} '^link Settings: (.+)' {$obj.Settings = $Matches[1]}}
总结

以上是内存溢出为你收集整理的Powershell – 将文本字段转换为对象全部内容,希望文章能够帮你解决Powershell – 将文本字段转换为对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1043679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存