如何在PowerShell的Measure-Object中排除Name属性获取最新日期
问题解决方法
你的问题出在计算最大值时没有排除Name属性,导致字符串类型的姓名被纳入比较,最终返回了姓名而非最新日期。以下是两种可行的修正方案:
方案1:排除Name属性计算最大值
通过过滤属性集合,只保留非Name的属性值进行计算:
$results = get-SiteVisits -Properties Name,Site1,Site2,Site3 $results | ForEach-Object { $_ | Select-Object -Property *, @{ Name='MaxValue'; Expression={ ($_.PSObject.Properties | Where-Object Name -ne 'Name').Value | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum } } }
方案2:直接指定日期属性(更高效)
既然明确要计算的是Site1、Site2、Site3三个日期的最大值,直接提取这三个属性的值进行计算:
$results = get-SiteVisits -Properties Name,Site1,Site2,Site3 $results | ForEach-Object { $_ | Select-Object -Property *, @{ Name='MaxValue'; Expression={ ($_.Site1, $_.Site2, $_.Site3 | Measure-Object -Maximum).Maximum } } }
两种方案都能得到你期望的输出,方案2因为不需要遍历所有属性,执行效率会更高。
内容的提问来源于stack exchange,提问作者Billy Nunya
相关产品推荐
相关产品推荐

