我需要使用HTTP Apache管道日志记录来放置所有带有响应代码的条目" 400"进入一个单独的文件。为此,我想使用PowerShell Select-String
,因为它最接近Linux中的grep
命令:
我有以下批处理从cmd环境中调用PowerShell脚本:
powershell -command "& { sls ,400, 'cmd -ca | select -exp line >> access_400.log }"
据我所知," CustomLog"在httpd中将类似于:
CustomLog "| 'call_powershell_script_that_will_extract_400_entries.ps1' " common
如何将CustomLog的管道输出输入到PowerShell脚本中,该脚本将使用" 400"回复代码?
答案 0 :(得分:1)
在脚本中使用自动PowerShell变量$input
。
我不完全理解你的剧本,但你应该能够推断出这个类似的例子:
filter.bat
@powershell -command "$input | select-string -casesensitive -pattern '%1' | select-object -expandproperty line | out-file -append -encoding ASCII output.log"
$input
将填充BAT / CMD文件的控制台输入。
要从命令行进行测试,请使用dir | filter.bat ".exe"
,然后使用type output.log
。
值得注意的是,我使用out-file而不是powershell重定向运算符,因此输出文件不会在powershell默认值UTF-16中编码,而是作为更常用的ASCII文件进行编码。