Я работаю над набором сценариев для управления некоторыми задачами анализа журналов, которые мне нужно выполнять с очень большими журналами IIS, сжатыми gzip. Работая над ним, я столкнулся с проблемой подключения к logparser
. Я упростил свою проблему до следующего.
Если я запускаю это, он работает так, как ожидалось. Файл журнала не такой большой и возвращается довольно быстро.
$query = "Select s-computername, Count(*) as count FROM stdin GROUP by s-computername"
Get-Content .\01-01-16\ex160101.log |
LogParser "$query" -i:IISW3C -o:CSV -headers:ON -fileMode:1 -q:ON
Однако, если я хочу поместить часть LogParser
в функцию PowerShell, чтобы упростить ее выполнение. На самом деле, я действительно хотел бы передать запрос, но я пытаюсь работать в обратном направлении от самого простого, что я могу придумать.
Вот что у меня получилось.
Function Test-IISLog {
Begin {
$query = "Select s-computername, Count(*) as count FROM stdin GROUP by s-computername"
}
Process {
$_ | LogParser "$query" -i:IISW3C -o:CSV -headers:ON -fileMode:1 -q:ON | Write-Output
}
}
Get-Content .\01-01-16\ex160101.log | Test-IISLog
Когда я запускаю это, он просто крутит колеса в течение очень долгого времени. Я пробовал разные комбинации этой команды, одну без $_
и одну без Write-Output
. Ни один из них не работает. Не знаю, почему так долго не возвращаются.
Может кто-нибудь помочь с этим? Должен ли я делать это по-другому?
Моя конечная цель состоит в том, чтобы иметь простой способ выполнить logparser
запрос к набору журналов IIS, которые были заархивированы и сохранены на устройстве netapp. До сих пор часть разархивирования хорошо работала с конвейерами, и пока я передаю напрямую в LogParser, он работает. Когда я вызываю LogParser
из другой функции PowerShell, у меня возникают проблемы.
$_
на$input
- person Mathias R. Jessen   schedule 30.01.2016