我是合作学生和新的PowerShell用户,我正在尝试创建一个脚本,该文件为CSV文件中的列提取信息,并将平均值输出到哈希表。有问题的文件是一个日志文件,其中包含具有与特定组件相关的名称的标头。这些标题下的数据主要是温度值,我想对其执行各种操作。这就是我所拥有的:
function createTable{
param ([parameter(mandatory=$true)]$filename)
$d = ipcsv $filename
$rowsize = ($d | measure-object).count
$table = @{}
$headername = $d | get-member | select 'membertype','Name' | where-object {$_.membertype -eq "Noteproperty"} | select 'Name'
$table.add("Log Start Time", ($d | select -index 2 | select 'Time').time)
$table.add("Log End Time", ($d | select -last 1 | select 'Time').time)
$totaltemp = 0
$count = 0
for($i = 0; $i -lt $p.count; $i++){
$d | select $headername[$i].'Name' | foreach-object{if($_.($headername[$i].'Name') -ne 'Time'){
if (([int64]::TryParse($d.($headername[$i].'name')[3] , [ref]""))){
for ($j = 3; $j -lt $u ; $j++){
$totaltemp = $totaltemp + $d.($headername[$i].'name')[$j]
$count++
}
}
}
if ($count -ne 0){
$table.add($headername.name[$i], $totaltemp/$count)
}
}
}
write-output $table
};set-alias ct createtable
我确定这需要做很多工作,但我愿意学习。我的变量$ u测量文件中的行数,我的变量$ p隔离了标题名称。我试图检查每个标题的行值是否为数字,然后尝试将它们相加以取平均值。我的第一个for循环意味着根据列数执行,而第二个循环意图根据行数执行,排除前两行。