Вы можете напрямую передать [PSCustomObject]
в переменную, собирающую весь вывод foreach:
$Events= Get-WinEvent -ComputerName MYPDC -FilterHashtable @{Logname='Security';id=4740} -MaxEvents 10
$TargetEvents= foreach ($Event in $Events){
[PSCustomObject]@{
Host=$Event.Properties[1].value.ToString()
User=$Event.Properties[0].value.ToString()
}
}
Для получения ваших данных вы можете использовать Group-Object
здесь с -NoElement
в качестве значения только (Частота) и Host
/ User
> $TargetEvents | Group-Object Host -NoElement
Count Name
----- ----
3 host1
2 host2
Чтобы получить желаемый результат, используйте Select-Object для переименования Count to Frequency с вычисляемым свойством.
$TargetEvents | Group-Object Host -NoElement | Select-Object @{n='Host';e={$_.Name}},@{n='Frequency';e={$_.Count}}
Host Frequency
---- ---------
host1 3
host2 2
$TargetEvents | Group-Object User -NoElement | Select-Object @{n='User';e={$_.Name}},@{n='Frequency';e={$_.Count}}
User Frequency
---- ---------
user1 1
user2 1
user3 1
user4 2