2016-07-20 2 views
0

Я пытаюсь освоить программирование и сценарии Powershell.Идентификатор идентификатора события и отчет CSV на нескольких серверах

Я работаю над скриптом для сбора списка серверов (в этом случае DCs), которые представляют конкретный идентификатор события.

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

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

$DCsList = (Get-ADForest).Domains | %{Get-ADDomainController -Filter * -Server $_} | Select-Object HostName | Sort-Object Hostname 

$result = Foreach ($dcs in $DCsList){ 
try{ 
Get-WinEvent -computername $dcs -FilterHashtable @{Logname='System';ID=5774} -MaxEvents 1 -ErrorAction SilentlyContinue | fl 
} 
catch{ 
} 
write-output "$dcs doesn't have the event 5774 on the system log" 
} 
$result | Out-File "D:\DNSRegEvents.txt" 

ответ

0

Я не совсем ясно, как вы хотите, чтобы ваш выход отформатирован, но предполагается, что вы хотите CSV с одним столбца, имена хостов и второй столбец является, если EventID присутствует или нет, то это код будет делать:

$DCsList = (Get-ADForest).Domains | %{Get-ADDomainController -Filter * -Server $_} | Select-Object HostName | Sort-Object Hostname 
$result = Foreach ($dcs in $DCsList) 
{ 
    If ((Get-WinEvent -FilterHashtable @{Logname='System';ID=5774} -MaxEvents 1 -ErrorAction SilentlyContinue).length -gt 0) 
    { 
     $Object = New-Object PSObject -Property @{    
     Server = $dcs.HostName    
     Result = "Server has event" 
     } 
    } 
    Else 
    { 
     $Object = New-Object PSObject -Property @{    
     Server = $dcs.HostName    
     Result = "Server does not have event" 
     } 
    } 
    $Object 
} 
$result | Export-Csv "D:\DNSRegEvents.csv" -NoTypeInformation