使用Powershell排序和组从CSV文件中提取数据

时间:2019-10-23 21:35:28

标签: powershell loops csv

我的目标是按照Start_Order的顺序分别输出每个Group对象。从Count中,您可以看到在同一Server_Name下有多个对象。

我现在的代码将所有内容打包在一起。

输出应为:

Server_Name             Service_Name
USOHCLIENT901             DISP01   #organized by Start_Order, Start_Order =1
                          DISP03   #Start_Order =2
                          DISP05   #Start_Order =3 
$Sourcefile = "C:\Users\StartF.csv"

$StartProperties  = (Import-Csv $Sourcefile)  | select Ava_Zone,Environment,Server_Name,
                                                Purpose,Service_Name, Start_Order, Start_Flag, 
                                                Start_Wait
# $StartProperties

$StartProperties | Group-Object -Property Server_Name | Sort-Object -Property {$_Start_Order}

Count Name                      Group                                          
----- ----                      -----                                          
    1 USOHCLIENT901             {@{Ava_Zone=us-east-2a; Environment=DEV; Ser...
   13 DEFRCLIENT801             {@{Ava_Zone=de-central-1a; Environment=TEST;...
   12 APSGCOGAPP803             {@{Ava_Zone=ap-southeast-1a; Environment=TES...
   12 APSGCOGAPP802             {@{Ava_Zone=ap-southeast-1b; Environment=TES...
   12 APSGCOGAPP801             {@{Ava_Zone=ap-southeast-1a; Environment=TES...
    1 APSGCLIENT801             {@{Ava_Zone=ap-southeast-1a; Environment=TES...
   12 USOHCOGAPP803             {@{Ava_Zone=us-east-2a; Environment=TEST; Se...
   12 USOHCOGAPP802             {@{Ava_Zone=us-east-2a; Environment=TEST; Se...
   12 USOHCOGAPP801             {@{Ava_Zone=us-east-2a; Environment=TEST; Se...
    1 USOHCLIENT801             {@{Ava_Zone=us-east-2a; Environment=TEST; Se...
    1                           {@{Ava_Zone=--; Environment=; Server_Name=; ...
   12 DEFRCLIENT903             {@{Ava_Zone=de-central-1a; Environment=DEV; ...
   12 DEFRCOGAPP902             {@{Ava_Zone=de-central-1b; Environment=DEV; ...
   11 DEFRCOGAPP901             {@{Ava_Zone=de-central-1a; Environment=DEV; ...
    2 DEFRCLIENT901             {@{Ava_Zone=de-central-1a; Environment=DEV; ...
   12 APSGCOGAPP903             {@{Ava_Zone=ap-southeast-1a; Environment=DEV...
   12 APSGCOGAPP902             {@{Ava_Zone=ap-southeast-1b; Environment=DEV...
   12 APSGCOGAPP901             {@{Ava_Zone=ap-southeast-1a; Environment=DEV...
    1 APSGCLIENT901             {@{Ava_Zone=ap-southeast-1a; Environment=DEV...
   12 USOHCOGAPP903             {@{Ava_Zone=us-east-2a; Environment=DEV; Ser...
   12 USOHCOGAPP902             {@{Ava_Zone=us-east-2a; Environment=DEV; Ser...
   12 USOHCOGAPP901             {@{Ava_Zone=us-east-2a; Environment=DEV; Ser...
   12 DEFRCOGAPP802             {@{Ava_Zone=de-central-1b; Environment=TEST;...
   12 DEFRCOGAPP803             {@{Ava_Zone=de-central-1a; Environment=TEST;...

PowerShell Output

1 个答案:

答案 0 :(得分:0)

看看下面的代码。它会为所有正在运行的进程提供所需的功能。在Group-Object之后,您可以使用Select-Object和自定义创建的属性@{Name = 'Id'; Expression = {($_.Group.Id | Sort-Object) -join " r n"}}直接选择所需的属性,该属性将从Group-Object组中收集数据并进行排序它。

$Processes = Get-Process
$Processes | Group-Object -Property 'ProcessName' | Select-Object -Property 'Name', @{Name = 'Id'; Expression = {($_.Group.Id | Sort-Object) -join "`r`n"}} | Format-List