Come filtrare un file di log con PowerShell
Tramite il comando Select-String, di PowerShell, è possibile cercare all'interno delle righe di un file di log in formato testo una o più occorrenze di una determinata stringa.
Il comando per cercare una stringa semplice e questo:
senza lo switch -AllMatches ritorna solo la prima occorrenza.
E' anche possibile eseguire una ricerca tramite una regular expression. Per far questo rimuovere lo switch SimpleMatch ed includere l'espressione di ricerca:
in questo caso cerco tutti gli utenti del dominio SGART che iniziano con user seguito da 1 o più numeri (es. SGART\user1, SGART\user456, ecc...).
Vedi anche Regular Expression Search.
Infine è possibile salvare il risultato della ricerca su un file:
Ci sono anche altri switch a disposizione come -CaseSensitive oppure -NotMatch per cercare tutte le righe che non corrispondono al pattern.
Il comando per cercare una stringa semplice e questo:
C#
Get-Content D:\SharePoint\LOGS\IIS\W3SVC14736843\u_ex131125.log | Select-String -Pattern "SGART\user1" -AllMatches -SimpleMatch
E' anche possibile eseguire una ricerca tramite una regular expression. Per far questo rimuovere lo switch SimpleMatch ed includere l'espressione di ricerca:
C#
Get-Content D:\SharePoint\LOGS\IIS\W3SVC14736843\u_ex131125.log | Select-String -Pattern "SGART\\user[0-9]+"" -AllMatches
Vedi anche Regular Expression Search.
Infine è possibile salvare il risultato della ricerca su un file:
C#
Get-Content D:\SharePoint\LOGS\IIS\W3SVC14736843\u_ex131125.log | Select-String -Pattern "SGART\\user[0-9]+"" -AllMatches | Set-Content $pwd\prova.txt
La variabile $pwd rappresenta il percorso corrente.
Ci sono anche altri switch a disposizione come -CaseSensitive oppure -NotMatch per cercare tutte le righe che non corrispondono al pattern.