我正在尝试使用Import-CSV命令行开关解析.csv文件,如下所示:
$lease_import = ipcsv -Path 'C:\leases.csv'-Delimiter "," | where {
($_.binding_state -ne "ABANDONED") -and ($_.mac_address -ne "") -and (($_.ends -replace "T"," " )-match "2014")
}
此CSV中的常规“结束”字段如下所示:2014-01-23T13:49:38.000Z
。我想用空格替换'T',我想用空字符串替换.000Z
。最后,破折号必须由/替换。最终结果必须是这样的:
2014/01/23 13:49:38
我尝试使用-replace将“T”更改为此链接后面的空格:http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/21/use-powershell-to-replace-text-in-strings.aspx。但是,这对我不起作用。
我是否想立刻做太多事?
答案 0 :(得分:0)
尝试从字符串中解析DateTime可能会有更优雅的解决方案但是非常简单的
("2014-01-23T13:49:38.000Z".TrimEnd(".000Z") -Replace "T"," ") -replace "-","/"
会返回
2014/01/23 13:49:38
在你的循环中,这看起来像
($_.ends.TrimEnd(".000Z") -Replace "T"," ") -replace "-","/"
代替.TrimEnd()
你可以做另一个Replace
,但由于TrimEnd
是删除尾随字符,为什么不使用它。
我确实尝试使用像[datetime]::ParseExact
这样的东西,但是他们需要拥有干净的字符串而不需要额外的数据,否则你会得到解析错误。您可以像-replace
一样清理字符串,但是使用该函数会变得多余。其他人可能有更清洁的方法