Для встряхивания обычной многоразовой функции UnPivot-Object
:
Пример данных
$Table = ConvertFrom-Csv @'
Hour,9/6/2019,9/7/2019,9/8/2019
1,305,293,257
2,284,273,241
3,268,256,227
'@
Функция UnPivot
Function UnPivot-Object {
[CmdletBinding()][OutputType([Object[]])]Param (
[Parameter(ValueFromPipeLine = $True)]$InputObject
)
Process {
$Properties = $InputObject.PSObject.Properties
$Row = ($Properties | Select-Object -First 1).Value
$Properties | Select-Object -Skip 1 | ForEach-Object {
[PSCustomObject]@{Row = $Row; Column = $_.Name; Value = $_.Value}
}
}
}; Set-Alias UnPivot UnPivot-Object
Результат
$Table | UnPivot
Row Column Value
--- ------ -----
1 9/6/2019 305
1 9/7/2019 293
1 9/8/2019 257
2 9/6/2019 284
2 9/7/2019 273
2 9/8/2019 241
3 9/6/2019 268
3 9/7/2019 256
3 9/8/2019 227
Specifi c на ваш вопрос
$Table | UnPivot | Sort Column | ForEach {'{0} {1:##}:00:00 - {2}' -f $_.Column, $_.Row, $_.Value}
9/6/2019 1:00:00 - 305
9/6/2019 2:00:00 - 284
9/6/2019 3:00:00 - 268
9/7/2019 1:00:00 - 293
9/7/2019 2:00:00 - 273
9/7/2019 3:00:00 - 256
9/8/2019 1:00:00 - 257
9/8/2019 2:00:00 - 241
9/8/2019 3:00:00 - 227