Выглядит как проблема с форматированием, хотя, похоже, работает следующее:
$before = get-date
$after = (get-date).AddDays(-1)
$a = Get-EventLog System -Before $before -After $after | ? {$_.Message -like "*start*"}
$a | select message, username,timegenerated | format-table -force
echo "----going through security----"
$b = Get-Eventlog security -Before $before -After $after |?{$_.category -match "Logon/Logoff" }
$b | select username,timegenerated | format-table -force
Кроме того, это определенно похоже на ошибку, связанную с выводом нескольких пользовательских psobject-ов (созданных выше в результате выполнениявыбирает).
Следующий код явно создает отдельный объект PSObject для каждого результата запроса и возвращает те же результаты, что и ваш код (т. Е. Только один набор заголовков):
$before = get-date
$after = (get-date).AddDays(-1)
$a = Get-EventLog System -Before $before -After $after | ? {$_.Message -like "*start*"}
$a = $a | `
% {New-Object PSObject -Property `
@{Message = $_.message; Username = $_.username; Timegenerated = $_.timegenerated}
}
$a
echo "----going through security----"
$b = Get-Eventlog security -Before $before -After $after |?{$_.category -match "Logon/Logoff" }
$b = $b | `
% {New-Object PSObject -Property `
@{Username = $_.username; Timegenerated = $_.timegenerated}
}
$b
Запустите это в PS_ISE и выполните:
$a | gm
$b | gm
Вы можете видеть, что это отдельные объекты с разными свойствами.Все становится еще страннее, если вы не используете одинаковые имена ключей между объектами;посмотрите на возвращенные результаты, если мы изменим:
$b = $b | `
% {New-Object PSObject -Property `
@{Username = $_.username; Timegenerated = $_.timegenerated}
}
на:
$b = $b | `
% {New-Object PSObject -Property `
@{UsernameB = $_.username; TimegeneratedB = $_.timegenerated}
}
Для тех, у кого нет желания запускать это, возвращается пробел, где должен быть набор результатов безопасности.При запуске Get-Member снова отображаются два пользовательских объекта, каждый со своими собственными свойствами.
Вероятно, стоит зарегистрировать это в Microsoft Connect, хотя похоже, что PSCustomObjects может получить капитальный ремонт в v3, см. здесь .