我正在尝试使用PowerShell按日期对控制台程序返回的行进行排序.
日期以MM/dd/yyyy格式格式化,因此必须将它们转换为DateTime对象,使其处于可排序的格式.
要解析日期,我使用:
$dates = %{ "10/24/2010", "02/03/2010" }
$dates | %{ [System.DateTime]::ParseExact($_, "MM/dd/yyyy", $null) }
Run Code Online (Sandbox Code Playgroud)
这会将日期解析为System.DateTime对象并显示其默认的ToString()表示,但它也会在开头显示另一个空行.
现在,如果我尝试使用Sort-Object对日期进行排序,我会收到一条错误消息,我猜错误来自额外的空白行:
$sortedDates = $dates | Sort-Object [System.DateTime]::ParseExact($_, "MM/dd/yyyy", $null)
Run Code Online (Sandbox Code Playgroud)
错误信息:
"Sort-Object:找不到接受参数'System.Object []'的位置参数."
多余的空白行是从哪里来的?我是在做错什么来解析日期,还是对它们进行排序?
我认为部分问题出在第一行.
%{}表示foreach-object {}.
我认为你的意思是@(,).你甚至不需要@().
$dates= "10/24/2010", "02/03/2010"
Run Code Online (Sandbox Code Playgroud)
工作良好.
要按"派生字段"排序,请使用scriptblock.
$sortedDates = $dates | Sort-Object {[System.DateTime]::ParseExact($_, "MM/dd/yyyy", $null)}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10587 次 |
| 最近记录: |