使用PowerShell从.csv中的数据创build数据透视表

我有一个.csv文件,我想从一个列中获取所有数据,并使用powershell生成一个数据透视表。 这个专栏有很多重复,我想看看有多less个每个项目。 附件是我想通过PowerShell而不是手动在Excel中完成的图像。 第一个图像是示例数据,第二个图像是我想从数据生成的。 谢谢你的帮助 :)

数据 结果

Doug Finke制作了一个叫做Import-Excel的精彩PowerShell模块,你可以在这里find。

如果您使用的是PowerShell v5或更高版本,则可以像这样安装它:

 Install-Module ImportExcel -scope CurrentUser 

这个模块具有一些非常棒的透视function,下面是一个例子:

 Get-Service | Export-Excel "c:\temp\test2.xlsx" ` -Show ` -IncludePivotTable ` -IncludePivotChart ` -PivotRows status ` -PivotData @{status='count'} 

在这里输入图像说明

我没有访问你的源数据,但你可以运行这样的东西:

 Import-CSV C:\yourPath\YourFile.csv | Export-Excel "c:\temp\OSReport.xlsx" ` -Show ` -IncludePivotTable ` -IncludePivotChart ` -PivotRows 'Operating System' ` -PivotData @{'Operating System'='count'} 

我只是嘲笑一些操作系统计数的文件,并通过该代码运行。 结果如下。

如果你有这么多的Windows 98机器...寻求新的工作或给我打电话来帮助你解决它!

我希望这会让你朝着正确的方向前进!

有关此工具的一个重要注意事项:每次运行Export-Excel时必须提供一个新的文件名,否则会引发难看的错误消息。 或者脚本删除文件,或者每次更改文件名以避免它。

我看不到这些图像,但应该是这样的

 $list = Import-Csv -Path P:\ath\to\file.csv -Delimiter ";" $duplicates = ($list | Group-Object -Property <ColumName>).Where({ $_.Count -gt 1 }) 

将其replace为要search重复项的列的名称。

您需要的2个主要function是Import-Csv和Group-Object

请考虑一下,Import-Csv在数组中创buildPSCustomObjects,并且列中的第一行是它们的属性。

所以如果你有一个csv文件,如:

 Column1;Column2;Column3 foo;bar;baz baz;bar:foo 

您将拥有一个PSCustomObjects数组,其Column1,Column2,Column3作为属性。 如果您的csv文件在第一行中没有列名称,则可以使用带有参数-Header ColumName的Import-Csv。

总而言之,你想要做的是一个简单的工作,只是阅读我链接的function,你会做到这一点:)

Greetz Eldo.O