Powershell对多列和方向进行排序

时间:2016-06-30 16:40:26

标签: sorting csv powershell

我设法让Powershell对不同方向的多个列进行排序;

$prop1 = @{Expression='Priority'; Descending=$true }

$prop2 = @{Expression='Date'; Ascending=$true }

(Import-Csv $BackUpDataPath"WaitList.csv") |
    Sort-Object $prop1, $prop2 |
    Export-Csv $BackUpDataPath"WaitList.csv" -NoType

我的问题是优先级值存储为字符串数据并按文本排序,因此输出到文件;

Date              Priority

6/28/2016 16:46  2

6/28/2016 16:59  2

6/29/2016 15:27  11

6/28/2016 16:42  1

6/28/2016 16:49  1

我尝试了[int]$prop1以及类似的方法将其更改为整数,但它似乎不起作用。线6/29/2016 15:27 11应该是第一个,但事实并非如此。只要#的值小于10就可以了。它很好。

2 个答案:

答案 0 :(得分:1)

尝试

$prop1 = @{Expression={[int]$_.Priority}; Descending=$true }

答案 1 :(得分:0)

看看如何转换为string-> int我发现[int]是不可靠的,所以我去了另一个解决方案。请尝试这样的事情:

"2;2;11;1" -split ";" | %{[int]$Numeric=[convert]::ToInt32($_.toString(), 10) ; add-member -NotePropertyName "Numeric" -NotePropertyValue $Numeric -InputObject $_ ; echo $_} | Sort-Object Numeric

我创建一个String数组,然后拆分它,为每个对象生成值的Int32版本,然后将新成员添加到输入对象,我打印这个新对象,最后只需按新的排序数组属性。

我尝试将脚本包含在哈希表中,用于sort-object的“property”参数但不起作用:(。

希望这可以解决您的问题。

问候。