从日志文件中提取文件

时间:2019-03-06 16:21:59

标签: powershell

我需要一个日志文件的帮助,我需要将信息提取到另一个文件中,并且在决定使用哪种方法时遇到困难。

LogFile:
2019-01-14 21:36:36 INFO: Starting script execution
2019-01-14 21:36:36 INFO: Execution date is 1/14/2019 9:36:36 PM
2019-01-14 21:36:36 INFO: Script version is 1.1.6
2019-01-14 21:36:37 INFO: Executing forest is adroot.
2019-01-14 21:36:37 WARNING: Executing domain is office.adroot.
2019-01-14 21:36:37 INFO: Executing user is OFFICE\adaccountdeletion

基本上,我需要在日志文件中搜索INFO,脚本继续,并且警告脚本捕获了该行并将其输出到日志文件。我不确定是否应该使用Regex或If else语句以及如何使用。到目前为止,我有这个:

$input_path = 'H:\REPO\ADCLEAN\testlog.log'
$output_file = 'H:\REPO\ADCLEAN\Output.txt'
Get-Content ‘INFO’ >>$output_file
select-string -Path $input_path -Pattern $content -AllMatches | % { $_.Matches } | % { $_.Value } > $output_file

2 个答案:

答案 0 :(得分:1)

以下内容将抓取包含警告:的行并将其输出(使用附加)到您的文件中:

"WARNING" | Add-Content $output_file
(Get-Content $input_path) -cmatch "WARNING:" | Add-Content $output_file

以下内容将抓取包含 INFO:的行并将其输出(使用附加)到您的文件中:

"INFO" | Add-Content $output_file
(Get-Content $input_path) -cmatch "INFO:" | Add-Content $output_file

答案 1 :(得分:0)

尝试一下:

$input_path = 'H:\REPO\ADCLEAN\testlog.log'
$output_file = 'H:\REPO\ADCLEAN\Output.txt'

$content   = [System.IO.File]::ReadLines($input_path)
$warnings  = $content.Where( { $_ -like '*WARNING*' } )
[void][System.IO.File]::WriteAllLines($output_file, $warnings)