如何避免PowerShell Measure-Object取最大值时截断数据?
解决PowerShell Measure-Object返回大整数时的科学计数法截断问题
这个问题我太熟悉了!当处理像lastLogon这种超大的Int64类型数值时,PowerShell默认的输出格式会自动切换为科学计数法,导致末尾的有效数字被截断。这里有两个简单的方法可以解决:
方法1:格式化输出为完整字符串
直接将最大值转换为带指定格式的字符串,彻底避免科学计数法:
($UserDeets | Measure-Object -Property lastLogon -Maximum).Maximum.ToString('F0')
'F0'格式符会强制将数值转换为不带小数位的完整数字字符串,这样就能完整显示所有末尾数字,针对你的数据集,输出结果就是132282196073500496。
方法2:强制转换为Int64类型
因为lastLogon本质是Int64(64位整数),我们可以把Measure返回的最大值强制转换回Int64类型,让PowerShell以整数格式完整输出:
[int64]($UserDeets | Measure-Object -Property lastLogon -Maximum).Maximum
这个方法也能直接得到完整的数值,不会再出现1.322821960735E+17这种截断后的结果。
小提示
两种方法都能完美解决你的问题,你可以根据后续是否需要对这个数值做计算来选择:如果只是需要显示,方法1更直接;如果还要继续做数值运算,方法2保留了整数类型会更方便。
内容的提问来源于stack exchange,提问作者FrankU32
相关产品推荐
相关产品推荐

