2016-10-12 15 views
1

Im完全なpowershell初心者。私は、ログファイルを読んで、最後のエントリが現在のタイムスタンプであるかどうかを確認する必要があります。文字列にdatetimeが存在するかどうかを調べる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 

私は正規表現ながらなどの文字列にPARAMをキャスト、 が格納さだけでなく、-match使用してみましたが、無駄

1.PS C:\Users\xxx> $y = $lastLine -Match [regex]::escape($x) 
2.PS C:\Users\xxx> $y=$lastLine -contains $x 

といくつかの他、PNにしました:$ yをチェックします上記のそれぞれの後の値。 $ yがfalseを返しています。誰も私を参照/解決策に導くことができます。あなたはフォーマットされた日付文字列がラインを使用して、その日付の文字列が続くスペースで終わる場合は、テストすることができ$formattedDate変数に格納されている場合は、私は...ここに何か

答えて

1

を欠けている

$lastLine -like "* $formattedDate"; 

Get-Dateコマンドレットは、ではなく、DateTimeの値を返します。 -like-matchなどの演算子を使用して特定の形式の日付を検索する場合は、日付変数が期待どおりにフォーマットされるようにする必要があります。

$formattedDate = Get-Date -Format 'MM/dd/yyyy h:mm:ss tt'; 

$date = Get-Date; 
$formattedDate = $date.ToString('MM/dd/yyyy h:mm:ss tt'); 
if ($lastLine -like "* $formattedDate") 
{ 
    # ... 
} 

あなたが-Formatパラメータを使用して一つに最初の2行を組み合わせることができます:それはデフォルト、カルチャ固有の日付の書式に依存しているのではなく、あなたが必要なものを正確に指定していない、あります

+0

ソリューション@BACONをありがとう。 。それは今働く –

関連する問題