Я работаю над набором сценариев для управления некоторыми задачами ловушки, которые мне нужно выполнить на очень жестких журналах IIS, которые были gzipped. Во время работы над этим я столкнулся с проблемой с трубопроводом до logparser
. Я упростил свою проблему следующим образом.Piping to 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, которые были gzipped и сохранены на устройстве netapp. До сих пор у меня была свободная порция, работающая хорошо с трубами, и до тех пор, пока я напрямую подключаюсь к LogParser, она работает. Когда я звоню LogParser
из другой функции PowerShell, у меня возникают проблемы.
Заменить '$ _' с' $ input' –
$ ввода дал те же результаты, $ _ – markdemich