我是一个完整的PowerShell初学者。我必须读取一个日志文件并检查最后一个条目是否是当前时间戳。
我使用Get-Content获取了最后一行;
PS> Write-Host $lastLine
new levels are 10/12/2016 4:23:34 PM
PS> $x =Get-Date
PS> Write-Host $x
10/12/2016 4:23:34 PM
我尝试过使用-match以及-contains 虽然正则表达式,铸造param到字符串等,但无济于事
1.PS C:\Users\xxx> $y = $lastLine -Match [regex]::escape($x)
2.PS C:\Users\xxx> $y=$lastLine -contains $x
和其他一些人,P.N:在上述每个案例之后检查$ y值。 $ y返回false。任何人都可以引导我参考/解决方案。我在这里遗漏了一些东西
答案 0 :(得分:1)
如果您在变量$formattedDate
中存储了格式化日期字符串,则可以使用...来测试该行是否以空格结尾,后跟该日期字符串
$lastLine -like "* $formattedDate";
请注意,Get-Date
cmdlet会返回DateTime
值,而不是string
。当您使用-like
或-match
等运算符搜索特定格式的日期时,您需要确保日期变量的格式符合您的预期。也就是说,不要依赖默认的特定于文化的日期格式,而是要准确指定您需要的内容:
$date = Get-Date;
$formattedDate = $date.ToString('MM/dd/yyyy h:mm:ss tt');
if ($lastLine -like "* $formattedDate")
{
# ...
}
您可以使用-Format
参数将前两行合并为一个:
$formattedDate = Get-Date -Format 'MM/dd/yyyy h:mm:ss tt';