2016-10-12 5 views
1

Im einen vollständigen Powershell-Anfänger ist. Ich muss eine Protokolldatei lesen und prüfen, ob der letzte Eintrag den aktuellen Zeitstempel hat.überprüfen, ob datetime in einer Zeichenfolge Powershell

Ich habe die letzte Zeile mit Get-Content abgerufen;

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 

Ich habe versucht, auch mit -match als -enthält während regex usw. param string Gießen, aber ohne Erfolg

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

und einige andere, PN: geprüft $ y Wert nach jedem der obigen Fälle. $ y ist falsch zurückgegeben., Kann mir jemand zu einer Referenz/Lösung führen. Mir fehlt hier etwas

Antwort

1

Wenn Sie ein formatiert Datum Zeichenfolge in der Variablen gespeichert haben $formattedDate Sie testen können, wenn die Zeile mit einem Leerzeichen zu diesem Zeitpunkt Zeichenfolge gefolgt endet mit ...

$lastLine -like "* $formattedDate"; 

Denken Sie daran, dass das Cmdlet Get-Date einen DateTime-Wert zurückgibt, nicht einen string. Wenn Sie Operatoren wie -like oder -match verwenden, um nach einem Datum in einem bestimmten Format zu suchen, sollten Sie sicherstellen, dass Ihre Datumsvariable so formatiert wird, wie Sie es erwarten. Das heißt, verlassen Sie sich nicht auf dem Standard, kulturspezifische Datumsformatierung, sondern genau angeben, was Sie brauchen:

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

Sie können die ersten beiden Zeilen in eine kombinieren, um die -Format Parameter verwendet:

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

Danke für die Lösung @BACON. . Es funktioniert jetzt –

Verwandte Themen