将CSV从嵌套对象转换为基于CSV的先前对象,并在PowerShell中需要数据

时间:2019-09-15 15:46:55

标签: json xml powershell csv

首先,该标题可能会有些混乱,并且不确定如何措辞。如果需要,请对其进行编辑。

我的任务是从打印机获取日志,并创建累积报告。打印机没有提供日期范围的功能,因此我需要考虑这一点。我的方法是获取CSV,然后将其转换为嵌套对象(XML或JSON),因此每个用户都可以拥有打印机的属性。然后,我需要将其转回CSV并使用不同的月份。如果CSV无法正常工作,也许我可以使用XML,可以在PowerShell中利用它并以HTML创建一些自定义报告。

例如,这就是一个月的样子

PrinterLog-Sep10.csv

User Name  Dept. ID Color Total Black & White Total Total Prints
---------  -------- ----------- ------------------- ------------
Mary Smith 1002     3           3                   6           
Kevin Hart 1006     3           2                   5           
Jeff Davis 1004     4           0                   4           
John Doe   1001     0           0                   0           
Joe Dirt   1003     0           0                   0           
Jane Jones 1005     0           0                   0           

我还需要考虑可能随时添加其他用户的原因。所以下个月可能是这样

PrinterLog-Oct19.csv

User Name  Dept. ID Color Total Black & White Total Total Prints
---------  -------- ----------- ------------------- ------------
John Doe   1001     2           5                   8           
Joe Dirt   1003     7           15                  8           
Jeff Davis 1004     6           4                   7           
Mary Smith 1002     6           7                   5           
Will Smart 1007     32          12                  43          
Jane Jones 1005     3           14                  2           
Kevin Hart 1006     6           7                   10          

我的方法一直在使用此foreach循环,但是我无法考虑如何检查新闻并保留现有数据。

foreach ($user in $canonCSV) {
    $final += @{
            $user.'User Name' = @{ 
            "B&W"   = $user.'Black & White Total'
            "Color" = $user.'Color Total'
            "Total" = $user.'Total Prints'
            "Dept" = $user.'Dept. ID'
        }
    }
}

我当时想也许将嵌套对象导出为XML或JSON,但是当我导入它时,不确定如何将其展平为CSV。我尝试使用Compare-Object,但对于其他用户而言,该方法无法正常工作。我真的为此失去了睡眠,因为我想不出一种正确的方法。我确定这是小事或琐事,但一切都让我无所适从。任何帮助是极大的赞赏。

0 个答案:

没有答案