【发布时间】:2020-03-09 10:29:08
【问题描述】:
我正在尝试比较以下数据以获得最大的数字:
$UserDeets
name lastLogon
---- ---------
Frank Ti 132273694413991065
Frank Ti 132279742884182029
Frank Ti 132282196073500496
Frank Ti 132272912975826719
Frank Ti 132282144707771693
Frank Ti 132228790551703041
为此,我尝试使用内置的“测量”功能。这是我正在执行的代码
($UserDeets| measure -Property lastLogon -Maximum ).Maximum
这样的结果如下
1.322821960735E+17
正如您所看到的,尽管它正在返回正确的数据,但它正在截断最后几位数字。
有没有办法防止这种截断?
【问题讨论】:
-
有趣——看起来
Measure-Object会产生一个Double,即使它的输入是Int64。这不仅仅是一个格式问题,因为Double不能精确地保存Int64的每个值。试试[System.Linq.Enumerable]::Max([long[]]($userDeets.lastLogon))(依赖 LINQ 而不是 M-O)。 -
感谢您的回复。很高兴知道这不起作用的实际原因。我确实找到了解决办法。
-
你可以转换你的日期时间,然后通过排序
@{Name="lastLogon";Expression={[datetime]::FromFileTime($_.'lastLogon')}}得到最新的