Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 相同ID的计数值_Powershell - Fatal编程技术网

Powershell 相同ID的计数值

Powershell 相同ID的计数值,powershell,Powershell,我是Powershell的新手,我正在尝试自动完成一项我通常会做的繁琐任务,如果您能帮助我或给出如何实现我的目标的任何想法,我将不胜感激 基本上我有一个CSV文件,看起来像这样: Name | Message | Date | Time ------ | ------ | ------ | ----- John | Good | 1/1/2001 | 1:00 PM John | Bad | 1/2/2002 | 2:00 AM Frank | Bet

我是Powershell的新手,我正在尝试自动完成一项我通常会做的繁琐任务,如果您能帮助我或给出如何实现我的目标的任何想法,我将不胜感激

基本上我有一个CSV文件,看起来像这样:

Name   | Message | Date     | Time 
------ | ------  | ------   | -----
John   | Good    | 1/1/2001 | 1:00 PM
John   | Bad     | 1/2/2002 | 2:00 AM
Frank  | Better  | 1/3/2003 | 3:00 PM
Frank  | Best    | 1/4/2004 | 4:00 AM
Mike   | Great   | 1/5/2005 | 5:00 PM
Mike   | Perfect | 1/6/2006 | 6:00 AM
Mike   | Awesome | 1/7/2007 | 7:00 PM
Name   | Message_Count
------ | ------
John   | 2  
Frank  | 2 
Mike   | 3
我试图实现的输出将如下所示:

Name   | Message | Date     | Time 
------ | ------  | ------   | -----
John   | Good    | 1/1/2001 | 1:00 PM
John   | Bad     | 1/2/2002 | 2:00 AM
Frank  | Better  | 1/3/2003 | 3:00 PM
Frank  | Best    | 1/4/2004 | 4:00 AM
Mike   | Great   | 1/5/2005 | 5:00 PM
Mike   | Perfect | 1/6/2006 | 6:00 AM
Mike   | Awesome | 1/7/2007 | 7:00 PM
Name   | Message_Count
------ | ------
John   | 2  
Frank  | 2 
Mike   | 3

到目前为止,我只能删除重复的邮件,但我不知道如何计算相应名称上的邮件。

此代码可以帮助您

Import-Csv <CSV File> | 
Group-Object Name | 
Select-Object @{Name='Name'; Expression={$_.Values[0]}}, 
              @{Name='Message_Count'; Expression={$_.Count}}

假设输入文件正是您显示它的方式,那么我们需要做一些工作,将其转换为PowerShell可以识别为CSV的格式。我已经修改了mfatih的代码来实现这一点:

Get-Content file.txt |
    % { $_ -replace "\s*\|\s*","|" } |  # Get rid of the spaces around the fields
    ConvertFrom-Csv -Delimiter '|' |    # Use "|" as the delimiter.
    ? Name -notmatch '^-+$' |           # Skip the "------" row.
    Group-Object Name | 
    Select-Object @{Name='Name'; Expression={$_.Values[0]}}, 
                  @{Name='Message_Count'; Expression={$_.Count}}
输出:

Name  Message_Count
----  -------------
John              2
Frank             2
Mike              3

下面的代码片段也给出了相同的结果

import-csv 'Input Path' | Group-Object Name | Select-Object Name,count

我已经编辑了我的问题。我忘了包括我的数据还有其他列。谢谢你的帮助。我得到的输出只是所有名字的消息总数。谢谢!:我要试试这个。谢谢!:我要测试一下这个。