Powershell Get-EventLog от computers.txt и сохранение данных - PullRequest
0 голосов
/ 04 апреля 2019

У меня проблемы с получением EventLog и сохранением данных. Я могу получать журналы событий, но не журналы с сетевых компьютеров.

Вот код, который я использую:

$logFileName = "Application" 
$path = $MyInvocation.MyCommand.Path +"\Output\" 
$path = $PSScriptRoot+"\Output\"

new-item $path -ItemType directory

$array = ("System", "Security")

$file = $PSScriptRoot +"\computers.txt"


$users = ForEach ($machine in $(Get-Content $file)) {

    $pathMachine = $path+$machine
    new-item $pathMachine -ItemType directory
    ForEach ($logFileName in $array){
        # do not edit


        $logFileName
        $exportFileName = (get-date -f yyyyMMdd) + "_" + $logFileName +  ".evt"
        $logFile = Get-WmiObject Win32_NTEventlogFile -ComputerName $machine | Where-Object {$_.logfilename -eq $logFileName}
        $logFile
        $exportFileName
        $pathMachine
        $temp = $pathMachine + "\"+ $exportFileName
        $temp
        $fff = $logFile.BackupEventLog($temp)

    }
}

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Это может считаться дубликатом этого.

Чтение журнала событий удаленно с помощью Get-EventLog в Powershell

# swapped from this command
get-eventlog -LogName System -computername <ServerName>

# to this
invoke-command {get-eventlog -LogName System} -ComputerName <ServerName>

Не пытайтесь писать этос нуля.Ну, если это не учебное упражнение.Существует предварительно созданный сценарий, позволяющий использовать его как есть и / или настраивать по мере необходимости.

Для запуска команд на удаленном хосте требуется использование командлета Invoke или установленного сеанса PSRemoting на этом хосте.

Получение удаленных журналов событий с помощью Powershell

Сбор информации об удаленном журнале событий для одной или нескольких систем с использованием wmi, альтернативных учетных данных и нескольких пространств выполнения.Функция поддерживает пользовательские параметры тайм-аута в случае возникновения проблем с wmi и возвращает информацию журнала событий за указанное количество прошедших часов.

Загрузка: Get-RemoteEventLogs.ps1

Скриптслишком длинная (более 100 строк) для публикации здесь, но здесь, в кратком изложении этого.

Function Get-RemoteEventLogs 
{ 
    <# 
    .SYNOPSIS 
       Retrieves event logs via WMI in multiple runspaces. 
    .DESCRIPTION 
       Retrieves event logs via WMI and, if needed, alternate credentials. This function utilizes multiple runspaces. 
    .PARAMETER ComputerName 
       Specifies the target computer or comptuers for data query. 
    .PARAMETER Hours 
       Gather event logs from the last number of hourse specified here. 
    .PARAMETER ThrottleLimit 
       Specifies the maximum number of systems to inventory simultaneously  
    .PARAMETER Timeout 
       Specifies the maximum time in second command can run in background before terminating this thread. 
    .PARAMETER ShowProgress 
       Show progress bar information 
    .EXAMPLE 
       PS > (Get-RemoteEventLogs).EventLogs 

       Description 
       ----------- 
       Lists all of the event logs found on the localhost in the last 24 hours. 

    .NOTES 
       Author: Zachary Loeber 
       Site: http://www.the-little-things.net/ 
       Requires: Powershell 2.0 

       Version History 
       1.0.0 - 08/28/2013 
        - Initial release 
    #> 

Или вот эта.

PowerShell для получения журнала событий локальногоили Удаленные компьютеры в файле .csv

Этот сценарий удобен, когда вы хотите извлечь журнал событий с удаленного или локального компьютера.Он имеет несколько фильтров, которые помогут отфильтровать данные.Вы можете фильтровать по имени журнала, типу события, источнику и т. Д. Это также имеет возможность получать данные на основе диапазона дат.Вы можете изменить th

Загрузить: eventLogFromRemoteSystem.ps1

Опять слишком велик, чтобы публиковать здесь, потому что длина такая же, как у другого.

0 голосов
/ 04 апреля 2019

Я работаю над некоторыми предположениями, но, возможно, это поможет.

Когда я проверил твой код, я получил

Get-Content : Cannot find path 'C:\computers.txt' because it does not exist.

Мне пришлось создать файл C:\computers.txt, затем я снова запустил ваш код и получил эту ошибку.

Get-Content : Cannot find path 'C:\Output\computers.txt' because it does not exist.

Я сделал этот файл в этом месте, затем снова запустил ваш код и получил файл журнала событий. Может быть, попробуйте создать эти два отсутствующих файла с помощью команды, подобной

Get-WmiObject Win32_NTEventlogFile -ComputerName $machine
mkdir C:\Output\$machine
$env:computername | Out-File -FilePath c:\Output\Computers.txt

Возможно, вы также захотите настроить общий сетевой ресурс и вывести его в это место, чтобы иметь доступ к журналам событий с одного компьютера. После настройки общего ресурса и разрешений просто удалите путь unc.

...