Powershell - zoeken op time code in log file

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • X-DraGoN
  • Registratie: Juli 2005
  • Laatst online: 14:37
Hey

Ik heb een log file die ik zou willen doorzoeken.
Ik zoek de huidige tijd, trek daar 3 minuten af en die tijd die er dan uit komt wil ik graag vanaf daar selecteren in de file.
Als ik die selectie heb; wil ik gaan zoeken op een voorkomen van een getallenreeks in die selectie


Wat ik tot nu toe heb:
code:
1
2
3
4
5
6
7
8
9
10
#Zoek de huidige datum in bepaald formaat
$datum = get-date -format "yyMMdd"
#zoek de naam van de juiste log file
$datumtxt = "TRAZA_HOST_"+$datum+".LOG"
#selecteer de laatste 100 lijnen van de log file
$zoek = Get-Content "C:\xxxx\$datumtxt" -tail 100
$hour = (get-date).addseconds(-180).hour
$minute = (get-date).addseconds(-180).minute
#zet alle entries in een variabele '$matches'
$Matches = Select-String -InputObject $zoek -Pattern $hour":"$minute -AllMatches


Maar select string lijkt hier niet goed voor te werken voor wat ik wil bereiken.

Is er een andere methode om snel een selectie te maken?

Alle reacties


Acties:
  • 0 Henk 'm!

  • X-DraGoN
  • Registratie: Juli 2005
  • Laatst online: 14:37
Ik denk het zelf opgelost te hebben:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$result = @()
$datum = get-date -format "yyMMdd"
$datumtxt = "TRAZA_HOST_"+$datum+".LOG"
$zoek = Get-Content "C:\xxxxx\$datumtxt" -tail 200
$hour = (get-date).addseconds(-180).hour
$minute3 = (get-date).addseconds(-180).minute
$minute2 = (get-date).addseconds(-120).minute
$minute1 = (get-date).addseconds(-60).minute
$minute = (get-date).minute
$result = @(foreach($line in $zoek)
{
sls -InputObject $line -Pattern $hour":"$minute3
sls -InputObject $line -Pattern $hour":"$minute2
sls -InputObject $line -Pattern $hour":"$minute1
sls -InputObject $line -Pattern $hour":"$minute
})

if ($result-like "*1820*"){

} 
else {add-content c:\scripts\xxxxx.txt "`nerror at $datum less than $count occurences of 1820's in the last 200 lines"}

#Stop Powershell from eating all the memory

$p = Get-Process -Name "powershell"
Stop-Process -InputObject $p
exit