【发布时间】:2020-06-12 19:06:23
【问题描述】:
所有,
我正在尝试为以下任务编写脚本。
我有多个物理实体,标题为 Entity1、Entity2 等。
每个实体都有 CSV 表,其中包含该特定实体的各种子系统的设置。像这样:
SubsystemName Subsystem code Execution Trigger Period Last ON
SubSys1 ad1 ON Timed 1d 01/05/2020
SubSys2 ad2 OFF Timed 5d 02/01/2020
SubSys3 af5 ON Manual 2d 04/02/2020
SubSys4 af5b OFF Timed 1d 01/01/2020
我需要做的是形成许多报告/表格,每个报告/表格汇总每个实体的每个子系统的特定设置,例如,查看每个实体的每个子系统的执行是否为 ON 我需要这种表格:
SubSystem Name Entity1 Entity2 Entity3 Entity4 Entity5
SubSys1 ON OFF ON OFF OFF
SubSys2 ON OFF ON ON OFF
SubSys3 OFF ON ON OFF OFF
SubSys4 ON OFF ON OFF OFF
SubSys5 ON OFF ON OFF OFF
到目前为止我所拥有的:
我清理了 CSV,并将它们写入每个实体的 JSON 文件中,如下所示:Entity1_Scheduler.json
我可能需要对任意一组实体的设置进行审核。由于在文件本身中没有提到这个特定的 JSON 属于什么实体,并且知道文件名的唯一方法是,我读取了一个对象中的每个 JSON,然后我创建了一个带有 NoteProperties 的 PSObject,其中 @987654326 @ - 实体名称和Value = JSONObj JSON 中的所有数据,如下所示:
$myEntities = @{'Entity1', 'Entity2'} #These are the entities I want to audit this time
$myData = [PSObject]::new() #This is going to be object holding all the data
#Reading only files for entities I need and only pick JSON version of it
Get-Content -path ($Path + "\*") -include ($myEntities|%{$_ + "*"}) -filter *.json -Raw | %{
$currentEntity = ($_.PSChildName -Split "_")[0] #Getting Entity name from file name
#This is the data for this entity
$currentJson = ConvertFrom-Json $_
#Assembling data from all entities in one object
$myData| Add-Member -MemberType NoteProperty -Name $currentEntity -Value $currentJson
}
所以,我有一个 PSObject,每个实体都有一个 NoteProperty 成员,其中 Name 是实体名称,Value 是来自帖子第一个表的 JSON 数据。 这就是我卡住的地方。 如何为选定的属性(又名“汇总表”又名“审计报告”)构建表格,在此示例中,执行:
SubSystem Name Entity1 Entity2 Entity3 Entity4 Entity5
SubSys1 ON OFF ON OFF OFF
SubSys2 ON OFF ON ON OFF
SubSys3 OFF ON ON OFF OFF
SubSys4 ON OFF ON OFF OFF
SubSys5 ON OFF ON OFF OFF
我现在组织数据的方式可以轻松完成吗?还是我应该从一开始就做不同的事情?
注意:并非所有实体都具有所有相同的子系统,因此它应该是所有可能子系统的联合(或完全外连接),对于没有特定子系统的实体,它只是在汇总表中有一些占位符符号,如“NA”或“---”。
【问题讨论】:
标签: json powershell csv summary psobject