我不确定Log Parser是否可以这样做,但我正在尝试创建一个包含多个IIS统计信息的HTML报告。仅使用一个Log Parser查询创建报表时没有任何问题,但我希望能够在PowerShell脚本中包含多个查询以创建一个报表。
我创建了.tpl模板文件,除了来自多个查询和HTML表格的值之外,但每次运行Log Parser时,只有filemode参数的选项才能追加或覆盖文件。附加HTML输出文件只会创建多个表,而不仅仅是从多个查询中将数据插入到单个表中。
我能想到的唯一选择是以某种方式在单个大型查询中创建多个查询或将它们连接在一起,因此Log Parser只需运行一次,并且每次运行时都不会覆盖/附加HTML输出文件。但我不认为Log Parser可以使用嵌套的Select语句。
如何获得这项工作的任何想法将不胜感激。
编辑:下面的代码示例
这是.tpl文件的片段,其中包含一个包含四列的表,我希望使用来自四个单独的日志解析器查询(应用程序的唯一用户)的数据填充每一列
<LPBODY>
<TH COLSPAN=4 BGCOLOR="BLACK"><FONT Size =4 COLOR=WHITE>Number of Unique Visitors </FONT>
<tr><th>App1</th><th>App2</th><th>App3</th><th>app4</th>
<TD>%App1%</TD><TD>%App2%</TD><TD>%App3%</TD><TD>%App4%</TD>
</LPBODY>
PowerShell脚本的片段,其中包含一些日志解析器查询,这些查询将使用.tpl模板文件创建HTML文件。
#Find unique users for App1 and insert into the HTML File
$UniqueUserApp1 = "SELECT COUNT(DISTINCT cs-username) AS App1 `
INTO Report.html FROM C:\IISLogs `
WHERE cs-uri-stem LIKE '%app1%' `
AND cs-username is not null
logparser i:W3C $UniqueUserApp1 -tpl:HTMLTemplate.tpl -fileMode:0
#Find unique users for App2 and insert into the HTML File
$UniqueUserApp1 = "SELECT COUNT(DISTINCT cs-username) AS App2 `
INTO Report.html FROM C:\IISLogs `
WHERE cs-uri-stem LIKE '%app2%' `
AND cs-username is not null
logparser i:W3C $UniqueUserApp2 -tpl:HTMLTemplate.tpl -fileMode:0
我遇到的问题是每个日志解析器查询运行时,它只创建一个单独的表,其中只有一个值填充在HTML报告的每个表中,而不是填充%app1%和%app2%的值一张桌子。这似乎是通过设计与Log Parser设置的,所以我正在寻找可能的工作来创建一个带有表格的结构化HTML页面,我可以从Log Parser Queries填充这些表格。
答案 0 :(得分:0)
您的问题对我来说不太清楚,因为您没有发布任何代码或所需结果的示例。但是,根据我的理解,这样的事情可能是一个起点:
$queries = ... # array with your LogParser queries
$queries | % {
& logparser -i:IIS -o:CSV -stats:off $_
} | ConvertFrom-Csv | ConvertTo-Html | Out-File 'C:\path\to\dat.html'