powershell - 在 csv 文件的开头附加列
问题描述
使用此代码,我将前几列写入 csv
$Hash = [ordered]@{}
foreach ($Property in $Properties) {
$Hash[$Property] = (($New_Extracted_Data.$Property | Measure -Sum).Sum)/$NumberOfRowsToPick
}
[pscustomobject]$Hash | Export-Csv "C:\script\sum_$Server$Services.csv" -NoType -Force
返回此结果:
rx_AVERAGE rx_MAX rx_MIN tx_AVERAGE tx_MAX tx_MIN
20538.44384 73426.92533 1886.881034 6355.250931 20152.27358 1817.357994
之后,我使用此代码附加 3 列:
$csv = Import-Csv -Path "c:\script\sum_$Server$Services.csv"
foreach($row in $csv)
{
$row | Add-Member -MemberType NoteProperty -Name "ServerName" -Value $Server -Force
$row | Add-Member -MemberType NoteProperty -Name "Start Time" -Value $FirstTimeStamp -Force
$row | Add-Member -MemberType NoteProperty -Name "End Time" -Value $LastTimeStamp -Force
}
$csv | Export-Csv -Path "c:\script\sum_$Server$Services.csv" -NoType
这产生了最终结果:
rx_AVERAGE rx_MAX rx_MIN tx_AVERAGE tx_MAX tx_MIN ServerName Start Time End Time
20538.44384 73426.92533 1886.881034 6355.250931 20152.27358 1817.357994 devas1.devad.myworldpanel.com 1597044600 1599633000
最后添加新添加的列。
我需要在开头添加新添加的列,如下所示:
ServerName Start Time End Time rx_AVERAGE rx_MAX rx_MIN tx_AVERAGE tx_MAX tx_MIN
devas1.devad.myworldpanel.com 1597044600 1599633000 20538.44384 73426.92533 1886.881034 6355.250931 20152.27358 1817.357994
ServerName Start Time End Time rx_AVERAGE rx_MAX rx_MIN tx_AVERAGE tx_MAX tx_MIN
devas1.devad.myworldpanel.com 1597044600 1599633000 20538.44384 73426.92533 1886.881034 6355.250931 20152.27358 1817.357994
请让我知道如何在开头而不是结尾添加它们?
解决方案
在添加循环中计算的属性之前将属性放入$Hash
字典中:
$Hash = [ordered]@{
ServerName = $Server
"Start Time" = $FirstTimeStamp
"End Time" = $LastTimeStamp
}
foreach ($Property in $Properties) {
$Hash[$Property] = (($New_Extracted_Data.$Property | Measure -Sum).Sum)/$NumberOfRowsToPick
}
[pscustomobject]$Hash
您还可以使用$Hash.Insert()
在字典顶部挤压新条目:
$Hash = [ordered]@{}
foreach ($Property in $Properties) {
$Hash[$Property] = (($New_Extracted_Data.$Property | Measure -Sum).Sum)/$NumberOfRowsToPick
}
$hash.Insert(0, 'ServerName', $Server)
$hash.Insert(1, 'Start Time', $FirstTimeStamp)
$hash.Insert(2, 'End Time', $LastTimeStamp)
[pscustomobject]$Hash
对于现有对象(即,如果这些步骤由单独的脚本完成),唯一的方法是创建一个新对象,您可以Select-Object
使用方便:
$csv |Select-Object -Property @('ServerName';'Start Time';'End Time';$Properties)
推荐阅读
- python - 将数据框中的json数组转换为分隔字符串
- python - statmodels OLS 在 python 中给出 TypeError
- javascript - Webpack 失败:“ENOTDIR:不是目录,stat 'node_modules/.cache/hard-source/.DS_Store/stamp'”
- sql-server - Visual Studio:将 ReportViewer 与用户生成的数据库文件(数据源)一起使用
- reactjs - Atom 中的 Eslint 在有效的 JSX 语法上出错
- python - 包含 3 个数组的数组只会打印一个(python)
- javascript - 传单折线箭头
- java - 如何在 Java 中设置一系列可能的值?
- regex - 从 VBA Excel 中的字符串中检索非常具体的值
- ms-access - MS Access 拆分表格数据表总计