检查字符串powershell

时间:2016-10-12 21:21:41

标签: powershell

我是一个完整的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。任何人都可以引导我参考/解决方案。我在这里遗漏了一些东西

1 个答案:

答案 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';