Использование PowerShell и WMI для чтения журнала безопасности - PullRequest
1 голос
/ 16 мая 2009

Я создаю скрипт для чтения журнала безопасности с нескольких компьютеров. Я могу читать журнал безопасности с локального компьютера без проблем при использовании команды Get-EventLog, но проблема в том, что я не могу запустить его на удаленном компьютере (скрипт предназначен для powershell v1). Команда ниже никогда не возвращает никаких результатов, хотя с любым другим LogFile она работает отлично:

gwmi -Class Win32_NTLogEvent | где {$ _. LogFile -eq "Безопасность"}

Я провел некоторое исследование, и мне кажется, что это проблема олицетворения, но опция -Impersonation для Get-WmiObject, похоже, не реализована. Есть ли что-нибудь вокруг этой проблемы? Решением может быть запуск Get-EventLog на удаленном компьютере или решение проблемы олицетворения для доступа к журналу безопасности. Спасибо

Ответы [ 2 ]

3 голосов
/ 16 мая 2009

Вы можете использовать .NET напрямую, а не через WMI. Блок скриптов ниже даст вам первую запись в журнале безопасности

$logs = [System.Diagnostics.EventLog]::GetEventLogs('computername')
$security = $logs | ? {$_.log -like 'Security'} 
$security.entries[0]
1 голос
/ 16 мая 2009

Вы пытались использовать параметр -Credential? Кроме того, используйте параметр фильтра вместо where-object, он получает только события безопасности (where-object получает ВСЕ события из всех журналов и только затем выполняет фильтрацию)

gwmi Win32_NTLogEvent -filter "LogFile = 'Security'" -компьютер comp1, comp2 -credential domain \ user

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...