计算Powershell中相同单元格值的数量

时间:2019-03-19 07:21:37

标签: powershell

我可能需要您的建议才能在Powershell上而不是从Excel上执行此操作。 我有一个示例CSV文件,如下所示。

$csv = Import-Csv -Path "C:\sample.csv" | Group VM | select Name, @{N='Number';E={($_.Group|Measure-Object -Property Count -sum).Sum}}

enter image description here

VM,Group
USFS01,F
USPS01,P
EUDC01,A
EUPS01,P
JPDC01,A
JPPS01,P

我希望在“输出”下面并保存输入和输出数据之间有5行空白的输出,还生成条形图和饼图,所有这些都在同一电子表格中。

Group   No.VM
-----   -----
A        2
F        1
P        3

谢谢。

2 个答案:

答案 0 :(得分:2)

尝试一下-

$csv = Import-Csv -Path "C:\sample.csv" 

$csv | Group-Object Group | % {
    New-Object psobject -Property @{
        Group = $_.Name
        'No.VM' = ($_.Count)
    }
}

下面是一个有效的示例-

$csv = @'
VM,Group
USFS01,F
USPS01,P
EUDC01,A
EUPS01,P
JPDC01,A
JPPS01,P
'@ | ConvertFrom-Csv

$csv | Group-Object Group | % {
    New-Object psobject -Property @{
        Group = $_.Name
        'No.VM' = ($_.Count)
    }
}

输出-

No.VM Group
----- -----
    1 F
    3 P
    2 A

答案 1 :(得分:0)

您的初始命令还不错,但是

  1. 您选择了错误的属性进行分组-应该是Group而不是VM
  2. 因为已经包含了所有需要的信息,请结合使用Group-Object-NoElement参数

> Import-Csv -Path ".\sample.csv" | Group-Object Group -NoElement

Count Name
----- ----
    1 F
    3 P
    2 A

要获得确切的属性名称和顺序,可以使用Sort-ObjectSelect-Object

Import-Csv -Path ".\sample.csv" | Group-Object Group -NoElement |
    Sort-Object Name | Select-Object @{n='Group';e={$_.Name}},@{n='No.VM';e={$_.Count}}

Group No.VM
----- -----
A         2
F         1
P         3