powershell - 添加工时的脚本

时间:2016-04-15 23:43:59

标签: powershell-v4.0

我还没有找到实现这一目标的方法,也没有找到一个关闭的网站。我可能只是不知道如何询问这个操作,所以我会在这里试试。

我所拥有的是一张CSV,其中包含每天工作时间(常规和OT)的员工列表,所有这些都在不同的行中。列有标题。员工姓名,日期,常规时间和OT时间在单独的列中。 挑战在于员工鲍勃,一天可能有20行。鲍勃整天将一小部分时间用于不同的项目。当然,有多天和多个员工。 我最终想要的是一份报告,每天为每位员工显示所有常规和加班时间(单独)。

我从这开始,它解析SV并给我一些感兴趣的列。但是,这只输出了每一行匹配的长列表,这不会让我到达我需要去的地方。

$employees = import-csv "c:\Test1.csv"
ForEach ($employee in $employees){
$employeeName = $($employee.'Resource name')
$WorkDate = $($employee.'Charge Date')
$RegHours = $($employee.RegHours)
$OT = $($employee.OTHours)
Write-host $employeeName $WorkDate $RegHours
}

然后我尝试格式化输出以尝试开始合并输出。因为在我看来,我需要2次合并。一个用于将所有用户数据放在一起,与其他用户分开,一个用于将每个用户下的所有相同日期放在一起。然后,可以针对每个用户在每天执行SUM。至少这就是我现在正在查看它的方式。

所以这是格式化尝试。但这只是给每一行提供标题。它没有巩固。标题很好,但是需要在标题下合并用户数据才能使用它。

 $employees = import-csv "C:\test2.csv"
ForEach ($employee in $employees)
{
$employeeName = $($employee.'Resource name')
$WorkDate = $($employee.'Charge Date')
$RegHours = $($employee.RegHours)
$OT = $($employee.OTHours)

$obj = $null
 $obj = New-Object System.Object
 $obj | Add-Member -type NoteProperty -Name "Employee Name" -Value $employeeName
 $obj | Add-Member -type NoteProperty -Name "Work Date" -Value $WorkDate
 $obj | Add-Member -type NoteProperty -Name "Regular Hours" -Value $RegHours

$obj | Format-table 
}

0 个答案:

没有答案