我有一个数组,我称之为 $data。
我想从 csv 文件中每个主机的 $data 数组中获取最早的日期。用户输入一个主机,它会找到它被修改的最早日期。
Hostname LastModified
HD 9/8/2012
LOG 9/15/2004
NETMAN 12/25/2004
NETMAN 5/5/2015
LOG 1/4/2013
LOG 6/6/2011
因此,如果他们输入 LOG,我希望它给我最早的日期。
Created on 9/15/2004
代码:
$data= import-csv ".\Earliest Date Template.csv"
$Hostname=Read-Host "Please enter Host Name"
$data | Foreach-Object {$_."Last Modified" = [DateTime]$_."Last Modified"; $_} | Group-Object Hostname| Foreach-Object {$_.Group | Sort-Object LastModified | Select-Object -First 1}
最佳答案
对它们进行分组似乎是可行的方法,但您不需要这样做。只需按日期对整个列表进行排序,然后从列表中选择最后一个选项(与您要查找的主机名匹配)。
$hostname = Read-Host "Please enter Hostname"
$data | Sort-Object {[DateTime]$_."LastModified"} | Where-Object{$_.Hostname -eq $hostname} | Select -Last 1
您可能需要进行一些用户验证,但类似的操作似乎适用于您的示例数据:
Please enter Hostname: log Hostname LastModified -------- ------------ LOG 1/4/2013
If you then only want the date it would just be a matter of expanding the value from the result.
$data |
Sort-Object {[DateTime]$_."LastModified"} |
Where-Object{$_.Hostname -eq $hostname} |
Select -Last 1 -ExpandProperty LastModified
关于arrays - 获取最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857562/