2016-03-08 122 views
2

我有一个数组,我称$数据。获取最新日期

我想从我的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} 
+0

这可以做到。你能告诉我们你试过的东西吗,我们可以帮你引导吗? – Matt

+0

这就是我到目前为止所做的。请输入主机名称“ $ data | Foreach-Object {$ _。“Last Modified”= [DateTime] $ _。“Last Modified”; $ _} | 组对象主机名| Foreach-Object {$ _。Group | Sort-Object LastModified | Select-Object -First 1} – ShanayL

+0

很高兴看到。您可以使用您的文章下方的[编辑]按钮(http://stackoverflow.com/posts/35857562/edit)将其添加到您的问题中吗?代码在评论中看起来很糟糕。 – Matt

回答

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

如果这时只想日这纯粹是扩大的问题结果的价值。

$data | 
    Sort-Object {[DateTime]$_."LastModified"} | 
    Where-Object{$_.Hostname -eq $hostname} | 
    Select -Last 1 -ExpandProperty LastModified 
+0

完美无缺!谢谢 – ShanayL