如何在PowerShell中使用foreach循环将搜索结果存储到表中?
在PowerShell中借助foreach循环将搜索结果存储至表格的方法
我来给你详细拆解如何实现这个需求,以及对应的代码细节——核心思路是通过foreach遍历获取到的JAMS历史记录,为每条记录创建自定义的行对象,再将这些行汇总到一个数组(也就是我们所说的“表格”)中。
完整实现代码
# 导入JAMS模块 Import-Module <JAMS> # 获取指定时间范围内的JAMS历史记录 $JAMSHistories = Get-JAMSHistory -Server TESTDUMMY2 -StartDate "01/20/2020" -EndDate "01/24/2020" # 初始化空数组,用作存储表格数据的容器 $historyTable = @() # 遍历每条JAMS历史记录 foreach($JAMSHistory in $JAMSHistories) { # 创建一个空的PSObject作为表格的行 $row = New-Object -TypeName PSObject # 打印当前记录的最终严重性(可选,用于调试) Write-Host $JAMSHistory.FinalSeverity # 根据严重性判断,为行添加对应的属性 if($JAMSHistory.FinalSeverity -match 'Success') { $row | Add-Member -NotePropertyName JobSeveritySuccess -NotePropertyValue ($JAMSHistory.FinalSeverity) } else { if ($JAMSHistory.FinalSeverity -match 'Error') { $row | Add-Member -NotePropertyName JobSeverityError -NotePropertyValue ($JAMSHistory.FinalSeverity) } } # 将当前行添加到表格容器中 $historyTable += $row } # 可以直接输出表格查看结果 $historyTable
关键步骤说明
- 导入模块与获取数据:首先导入JAMS模块,通过
Get-JAMSHistory命令拉取目标服务器、指定时间范围内的历史数据,存储到$JAMSHistories变量中。 - 初始化表格容器:用
@()创建一个空数组$historyTable,PowerShell中数组可以存储多个PSObject对象,从而模拟表格的结构。 - foreach循环处理每条记录:
- 每次循环创建一个
PSObject实例作为表格的一行,这个对象可以动态添加属性。 - 通过
-match匹配FinalSeverity的值,分别为行对象添加JobSeveritySuccess或JobSeverityError属性,并赋值为对应的严重性内容。 - 最后将处理好的行对象添加到
$historyTable数组中。
- 每次循环创建一个
- 查看结果:循环结束后,
$historyTable就包含了所有整理后的表格数据,直接输出即可查看。
小优化提示
如果需要让表格的结构更统一(比如每条记录都包含Success和Error属性,只是对应的值为空),可以调整属性添加的逻辑,这样后续处理数据会更方便:
$row = New-Object -TypeName PSObject -Property @{ JobSeveritySuccess = $null JobSeverityError = $null } if($JAMSHistory.FinalSeverity -match 'Success') { $row.JobSeveritySuccess = $JAMSHistory.FinalSeverity } elseif ($JAMSHistory.FinalSeverity -match 'Error') { $row.JobSeverityError = $JAMSHistory.FinalSeverity }
内容的提问来源于stack exchange,提问作者Brey Jackson
相关产品推荐
相关产品推荐

