2013-08-08 3 views
0

Есть ли какой-либо метод быстрее, чем wmi, доступный для сбора журналов событий Windows удаленно с помощью powershell? Если нет, то как мы можем сделать эффективный многопоточный wmi-запрос для сбора журналов с нескольких хостов?методы сбора журналов событий Windows удаленно?

ответ

0

Посмотрите на

Get-EventLog 

Вы можете запустить его в работу, чтобы распараллелить его:

Start-Job -ArgumentList $HostName { return $(Get-EventLog -ComputerName "$($args[0])" -LogName Application -Source "Source Name") } 

Затем собрать все данные:

$Logs = $(Get-Job | Wait-Job | Receive-Job) 

Какой будет выглядеть примерно так :

foreach($HostName in $Hosts) { 
    Start-Job -ArgumentList $HostName { return $(Get-EventLog -ComputerName "$($args[0])" -LogName Application -Source "Source Name") } 
} 

$Logs = $(Get-Job | Wait-Job | Receive-Job) 
+0

get-eventlog не предоставляет параметр учетных данных, и из-за этого я получаю ошибку «несанкционированная попытка». Альтернативным является использование команды invoke, но она использует http и ее медленную. –

+0

К сожалению, invoke-command будет вашим лучшим выбором. Если вы запускаете их параллельно, накладные расходы не будут столь очевидными. Вы также можете использовать WMI и многопоточно использовать их так же, используя задания. – Syddraf

Смежные вопросы