Csv 使用PowerShell导出txt文件中的数据

Csv 使用PowerShell导出txt文件中的数据,csv,powershell,Csv,Powershell,我在一个文本文件中工作,该文件将被导出到数据库中显示并生成报告 这个文本文件是通过解析客户在我工作的公司的机顶盒中调谐的跟踪信息创建的。每条线路的结构如下: 上次调谐的频道: 2016-05-10 22:30:19.282417 ; 10.193.115.63 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"THC","basis":"DEVICE"}]

我在一个文本文件中工作,该文件将被导出到数据库中显示并生成报告

这个文本文件是通过解析客户在我工作的公司的机顶盒中调谐的跟踪信息创建的。每条线路的结构如下:

上次调谐的频道:

2016-05-10 22:30:19.282417 ; 10.193.115.63 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"THC","basis":"DEVICE"}]} --
最后调谐的频道和最后音量:

2016-05-10 22:30:19.366016 ; 10.25.60.54 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastVolume","value":12,"basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"QROESTRELLA","basis":"DEVICE"}]} --
最后一个频道调谐和冲浪模式:

2016-05-10 22:30:19.953626 ; 10.85.156.3 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"TFLMZN","basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.surfMode","value":"ALL","basis":"DEVICE"}]} --
2016-05-10 22:30:48.651843 ; 10.193.158.74 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastVolume","value":16,"basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"NICK","basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.surfMode","value":"ALL","basis":"DEVICE"}]} ––
上次调谐的频道、上次音量和冲浪模式:

2016-05-10 22:30:19.953626 ; 10.85.156.3 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"TFLMZN","basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.surfMode","value":"ALL","basis":"DEVICE"}]} --
2016-05-10 22:30:48.651843 ; 10.193.158.74 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastVolume","value":16,"basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"NICK","basis":"DEVICE"},{"key":"tv.mirada.iptv.navi.surfMode","value":"ALL","basis":"DEVICE"}]} ––
我想在包含下一个“属性”的“数据库”中显示此数据:

-日期

-IP源

-IP目的地

-频道调谐

我使用PowerShell自动执行此操作。我是新来的。然后,我希望将这些信息转换为CSV文件

有什么想法吗


注意。

您的数据是以分号分隔的格式。这意味着我们可以使用PowerShell的
ConvertFrom CSV
cmdlet为我们解析数据:)

我将您的一条记录存储为变量
$e
,以进行概念验证

$e = '2016-05-10 22:30:19.282417 ; 10.193.115.63 ; 148.240.175.37 ;Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"THC","basis":"DEVICE"}]} --'
$e | ConvertFrom-Csv -Header 'Date','SourceIP','DestIP','Data' -Delimiter ';'
以及输出

Date                        SourceIP       DestIP          Data                                                                                                     
----                        --------       ------          ----                                                                                                     
2016-05-10 22:30:19.282417  10.193.115.63  148.240.175.37  Data-- {"preferences":[{"key":"tv.mirada.iptv.navi.lastChannelTuned","value":"THC","basis":"DEVICE"}]} --
现在,您可以轻松地将其导出为您想要的任何类型的文件格式

代码:

Clear-Host
$Input = @"

{
"preferences": [
{ "key":"tv.mirada.iptv.navi.lastChannelTuned" , "value":"THC" , "basis":"DEVICE" }
  ]
}

"@

$Victim = $Input | ConvertFrom-JSON
$Victim.preferences | Format-Table value -AutoSize
输出:

value
-----
THC

图像:

在powershell中有许多过滤文本文件并输出到CSV的示例。由于您是powershell的新手,请从搜索这些内容开始,并根据您的需要进行调整。非常好。现在我有了Data属性,我想提取通道(例如:THC,QROESTRELLA,TFLMZN,NICK),并在同一个表中显示通道atribute而不是数据atribute。我共享了一个图像,它是“数据库”。有可能吗?数据属性是json格式的,因此如果使用convertfrom json cmdlet,您应该能够获取通道。如果这有助于您更接近解决问题,请不要忘记投票并标记为答案。谢谢。我找到了一种提取部分财产的方法。有了这段代码,如何将它与许多事件“混合”在一起?我把答案与代码,输出和图像。