2015-04-08 2 views
0

я бега ниже сценариев и Eventlog пустое на HTM файле, но на PowerShellвыхода не приходит на HTM,

$ServerListFile = "D:\Scripts\ServerList.txt" 
$ServerList = Get-Content $ServerListFile -ErrorAction SilentlyContinue 
$Result = @() 
ForEach($computername in $ServerList) 
{ 
Get-Eventlog -LogName Security -Newest 2000 | Where-Object {$_.EventID -eq  "4624"} | Select-Object @{Name ="Username"; Expression = {$_.ReplacementStrings[1]}} 
    $result += [PSCustomObject] @{ 
    ServerName = "$computername" 
    EventLog = "$Username" 
    } 
$Outputreport = "<HTML><TITLE> Decommission Validation Report </TITLE> 
       <BODY background-color:peachpuff> 
       <font color =""#99000"" face=""Microsoft Tai le""> 
       <H2> Decommission Validation Report </H2></font> 
       <Table border=1 cellpadding=0 cellspacing=0> 
       <TR bgcolor=gray align=center> 
        <TD><B>Server Name</B></TD> 
        <TD><B>EventLog</B></TD></TR>" 
     Foreach($Entry in $Result) 
{ 
     if((($Entry.Servername) -or ($Entry.EventLog)) -ge 80) 
     { 
     $Outputreport += "<TR bgcolor=red>" 
     } 
     else 
     { 
     $Outputreport += "<TR>" 
     } 
     $Outputreport += "<TD>$($Entry.Servername)</TD></TD><TD align=center>$($Entry.Username)</TD></TR>" 
    } 
$Outputreport += "</Table></BODY></HTML>" 
    } 
$Outputreport | out-file D:\Scripts\Test.htm 
Invoke-Expression D:\Scripts\Test.htm 

Я бег вышеуказанных сценариев и Eventlog пустое на HTM файле, но на PowerShell

ответ

0

Я включил изменения, предложенные Дейном Боултоном, и немного изменил ваш код, чтобы получить то, во что я верю, то, что вы ищете. Я изменил запись «Замена строк» ​​на 5, потому что считаю, что вы ищете регистрацию учетной записи пользователя. Я также изменил переменную EventLog, чтобы ссылаться на $ item.UserName. Посмотрите, как это работает для вас.

$ServerListFile = "D:\Scripts\ServerList.txt" 
$ServerList = Get-Content $ServerListFile -ErrorAction SilentlyContinue 
$Result = @() 
ForEach($computername in $ServerList) 
    { 
    $eventLog = Get-Eventlog -LogName Security -Newest 2000 | Where-Object {$_.EventID -eq "4624"} | Select-Object @{Name ="Username"; Expression = {$_.ReplacementStrings[5]}} 
foreach($item in $eventLog) 
    { 
    $result += [PSCustomObject] @{ 
    ServerName = $computername 
    UserName = $item.Username 
    } 
    } 
    $Outputreport = "<HTML><TITLE> Decommission Validation Report </TITLE> 
       <BODY background-color:peachpuff> 
        <font color =""#99000"" face=""Microsoft Tai le""> 
        <H2> Decommission Validation Report </H2></font> 
        <Table border=1 cellpadding=0 cellspacing=0> 
        <TR bgcolor=gray align=center> 
         <TD><B>Server Name</B></TD> 
         <TD><B>UserName</B></TD></TR>" 
      Foreach($Entry in $Result) 
    { 
      if((($Entry.Servername) -or ($Entry.UserName)) -ge 80) 
      { 
      $Outputreport += "<TR bgcolor=red>" 
      } 
      else 
      { 
      $Outputreport += "<TR>" 
      } 
      $Outputreport += "<TD>$($Entry.Servername)</TD></TD><TD align=center>$($Entry.UserName)</TD></TR>" 
     } 
    $Outputreport += "</Table></BODY></HTML>" 
     } 
    $Outputreport | out-file D:\Scripts\Test.htm 
    Invoke-Expression D:\Scripts\Test.htm 
+0

$ LastaccessedFile = @() $ Filepath = Get-WmiObject -Class Win32_LogicalDisk | где {$ _. name -notmatch "C: *" - и $ _. DriveType -notMatch 5} | Выберите имя Еогеаспа ($ имя в $ Filepath) { $ Disk = $ name.name $ Дисков = "$ Disk" # Проверяет каждый диск в последний раз файл записи и полное имя $ Folders = Get-ChildItem - путь $ Диски | Сортировка {$ _. LastWriteTime} -Подробнее | Выберите {$ _. FullName, $ _. LastWriteTime} -Первый 1 } ForEach ($ var в $ Folders) { $ Папка = $ var. {$ _. $ Папка } –

+0

Ниже приведена последняя деталь, чтобы проверить последний файл, записанный в $ LastaccessedFile = @() $ Filepath = Get-WmiObject -Class Win32_LogicalDisk | где {$ _. name -notmatch "C: *" - и $ _. DriveType -notMatch 5} | Выберите имя foreach ($ name in $ Filepath) { $ Disk = $ name.name $ Disks = "$ Disk" $ Folders = Get-ChildItem -path $ Disks | Сортировка {$ _. LastWriteTime} -Подробнее | Выберите {$ _. FullName, $ _. LastWriteTime} -Первый 1 } ForEach ($ var в $ Folders) { $ Папка = $ var. {$ _. $ Папка } –

1

вы Арент захватив Get-EventLog возвращения значения

ForEach($computername in $ServerList) 
{ 
$eventLog = Get-Eventlog -LogName Security -Newest 2000 | Where-Object {$_.EventID -eq  "4624"} | Select-Object @{Name ="Username"; Expression = {$_.ReplacementStrings[1]}} 
$result += [PSCustomObject] @{ 
ServerName = "$computername" 
EventLog = "$eventLog.Username" 
} 

если то, что вы хотите, это запись в результате для каждого из 2k элементов журнала событий возвращаемые затем сделать это:

ForEach($computername in $ServerList) 
{ 
$eventLog = Get-Eventlog -LogName Security -Newest 2000 | Where-Object {$_.EventID -eq  "4624"} | Select-Object @{Name ="Username"; Expression = {$_.ReplacementStrings[1]}} 
foreach($item in $eventLog) 
    { 
    $result += [PSCustomObject] @{ 
    ServerName = "$computername" 
    EventLog = "$eventLog.Username" 
    } 
    } 
+0

Здравствуйте, Dane, Спасибо, я отредактировал его, чтобы захватить возвращаемые значения get-eventlog, но он по-прежнему выглядит пустым. Если я просто запускаю команду одиночной строки в powershell (Get-Eventlog -LogName Security -Newest 2000 | Where-Object {$ _. EventID -eq "5145"} | Select-Object @ {Name = "Username"; Expression = { $ _. ReplacementStrings [1]}}) Я получаю некоторые результаты –

+0

Что именно вы пытаетесь сделать? Причина в вашем коде вы получаете записи журнала событий 2000, но пытаетесь создать PSObject с именем сервера и массивом со всеми событиями журнала 2k. Вы пытаетесь создать отчет со всеми этими событиями журнала для каждого компьютера? –

+0

См. Правки выше –

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