Powershell Sort-Object by [DateTime] :: ParseExact

cka*_*ras 3 powershell

我正在尝试使用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 []'的位置参数."

多余的空白行是从哪里来的?我是在做错什么来解析日期,还是对它们进行排序?

Mik*_*ard 7

我认为部分问题出在第一行.

%{}表示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)