如何将批处理脚本输出管道到PowerShell脚本?

时间:2015-12-27 18:37:23

标签: windows apache powershell batch-file

我需要使用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"回复代码?

1 个答案:

答案 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文件进行编码。