我正在尝试使用 PowerShell 按日期对控制台程序返回的行进行排序。
日期的格式为 MM/dd/yyyy 格式,因此必须将它们转换为 DateTime 对象才能采用可排序的格式。
为了解析日期,我使用:
$dates = %{ "10/24/2010", "02/03/2010" }
$dates | %{ [System.DateTime]::ParseExact($_, "MM/dd/yyyy", $null) }
这会将日期解析为 System.DateTime 对象并显示其默认的 ToString() 表示形式,但它还在开头显示一个额外的空行。
现在,如果我尝试使用 Sort-Object 对日期进行排序,我会收到一条错误消息,我猜该错误来自附加的空行:
$sortedDates = $dates | Sort-Object [System.DateTime]::ParseExact($_, "MM/dd/yyyy", $null)
错误信息:
“排序对象:找不到接受参数“System.Object[]”的位置参数。”
多余的空行从哪里来?我在解析日期或对它们进行排序时做错了什么吗?
我认为部分问题出在第一行。
%{ } 表示 foreach-object { }。
我认为你的意思是@(,)。你实际上甚至不需要@()。
$dates= "10/24/2010", "02/03/2010"
工作正常。
要按“派生字段”排序,请使用脚本块。
$sortedDates = $dates | Sort-Object {[System.DateTime]::ParseExact($_, "MM/dd/yyyy", $null)}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)