如果这是一个愚蠢的问题或者我在错误的地方问了这个问题,请原谅。
我有一个 .csv 文件,其中包含一堆网络日志,格式如下:sourceIP、port、destinationIP、port、packetdata。“packetdata”字段包含已进行 base64 编码的 ASCII 信息。我需要导入 CSV 文件,将该单个字段从 base64 转换回原始字段,然后导出整个文件而不触及其他行。
我知道我需要使用 import-csv 来获取数据,并且我知道有一种 FromBase64String 转换方法,但我有点迷茫。
这是我目前所拥有的,它基本上是从其他代码拼凑起来的,当我尝试运行它时并没有真正完成......
import-csv c:\testbase64.csv|foreach-object {$_.packetdata = [text.encoding]::utf8.getstring([convert]::FromBase64String($_.packetdata))|Export-Csv -Path "C:\outputtest.csv" -NoTypeInformation
[text.encoding]::utf8.getstring([convert]::FromBase64String($variable))
如果在命令行上使用带有 base64 数据的标准变量作为数据源,则可以工作
我将非常感激任何人能提供的帮助,这将使阅读这些文件变得不那么痛苦。
答案1
将其保存为import.ps1
并按如下方式使用:.\import.ps1 C:\test.csv
。它将在当前目录中输出一个名为输出.csv。
您还需要更改港口列,所以一个是源端口一个是目的端口- 使用时不能有 2 个同名的列Import-Csv
。
$csv = Import-Csv $args[0]
$csv | ForEach-Object { $_.PacketData = [text.encoding]::utf8.getstring([convert]::FromBase64String($_.PacketData)) }
$csv | Export-Csv "Output.csv" -NoTypeInformation