【发布时间】:2015-08-11 14:31:50
【问题描述】:
我编写了以下脚本,用于通过分析 IIS 日志生成有关 SSRS、Excel 和性能点的报告:
Write-Host "`r"
if(!(Test-Path E:\BI_ToolUsage)){New-Item E:\BI_ToolUsage -type directory -force}
$today=(get-date).ToString("dd_MM_yyyy")
Write-Host "Content Farm Selected" -f green
$ConPaths="\\Server_logs\IC1-PS502\IIS-exports\*.log"
"date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken" |Out-file E:\BI_ToolUsage\Content_SSRS_$today.csv
"date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken" |Out-file E:\BI_ToolUsage\Content_ExcelService_$today.csv
"date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken" |Out-file E:\BI_ToolUsage\Content_PerformancePoint_$today.csv
Foreach($path in $ConPaths)
{
$path
gc $path |?{($_ | Select-String "RSViewerPage.aspx" | Out-file E:\BI_ToolUsage\Content_SSRS_$today.csv -Width 30000 -append);($_ | Select-String "xlviewer.aspx" | Out-file E:\BI_ToolUsage\Content_ExcelService_$today.csv -append -Width 30000);($_ | Select-String "PPSWebParts/ppsDashboard.css" |Out-file E:\BI_ToolUsage\Content_PerformancePoint_$today.csv -Width 30000 -append)}
}
$files=Get-ChildItem E:\BI_ToolUsage\Content*
foreach($file in $files){(Get-Content $file.FullName)| Where-Object {$_ -match '\S'}|%{$_ -replace " " , ","}|Out-File $file.FullName}
Write-Host "Completed !"
这里的东西是文件夹的大小是 19.3 GB 并且位置有 671 个文件:\Server_logs\IC1-PS502\IIS-exports 当我运行这个脚本时,生成报告通常需要大约 3-4 天。是否可以以某种方式优化上述脚本以减少完成所需的时间?根据我的知识修改下面的代码可以帮助很多:
gc $path |?{($_ | Select-String "RSViewerPage.aspx" | Out-file E:\BI_ToolUsage\Content_SSRS_$today.csv -Width 30000 -append);($_ | Select-String "xlviewer.aspx" | Out-file E:\BI_ToolUsage\Content_ExcelService_$today.csv -append -Width 30000);($_ | Select-String "PPSWebParts/ppsDashboard.css" |Out-file E:\BI_ToolUsage\Content_PerformancePoint_$today.csv -Width 30000 -append)}
请对此进行调查并分享您的观点。谢谢
【问题讨论】:
-
你真的,真的,真的,真的很想为此使用LogParser。它理解 IIS 格式,允许您编写类似 SQL 的查询,并在我的笔记本电脑上在大约 10 分钟内浏览 4GB 的 IIS 日志。哎呀,如果你愿意,你甚至可以将结果直接输出到 SQL Server。
-
@BaconBits:感谢您的回复。你能告诉我一个介绍性链接或一些关于使用 Logparser 的操作方法吗??
标签: windows-server-2008-r2 powershell-3.0