Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
-------------------------------------------------------------------------------------
$tm1 = get-date 6:00 #ставим дату на 6:00 сегодня
$ev = Get-EventLog -ComputerName servername -LogName System -Source Print -InstanceId 1073741834 -after $tm1
$typedef = "public struct userCntr {public string usr; public int cnt;}" #Описываем структуру
Add-Type -TypeDefinition $typedef #создаем тип по описанию
$buf1 = New-Object userCntr;
$buf2 = New-Object userCntr;
$allusers = $buf1,$buf2 #не нашел более простого способа создать массив объектов. Лень было разбираться, как конструктор кастомный написать. Проще потом отфильтровать две пустые записи в начале массива, которые возникнут при таком его создании. Они никак не мешеют, только глаза мазолят
foreach ($el in $ev)
{
$buf3 = New-Object userCntr;
$buf3.usr = $el.replacementstrings[2];
$buf3.cnt = $el.replacementstrings[6];
$mrk = 0
for ($i=0; $i -lt $allusers.Length; $i++)
{
if ($allusers[$i].usr -eq $buf3.usr) {$allusers[$i].cnt += $buf3.cnt; $mrk = 1}
}
if ($mrk -ne 1) {$allusers += $buf3} else {$mrk = 0}
}
$allusers | ? {$_.usr -ne $buf1.usr} > ("C:\PrintStat\" + (get-date -UFormat "%d-%m-%Y") + ".txt") #фильтр нужен, чтобы убрать первые две пустые записи, которые возникают при создании массива объектов
------------------------------------------------------------------------------------- Cannot index into a null array.
At line:14 char:36
+ $buf3.usr = $el.replacementstrings[ <<<< 2];
+ CategoryInfo : InvalidOperation: (2:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray$tm1 = get-date 6:00 #ставим дату на 6:00 сегодня
Get-EventLog -ComputerName servername -LogName System -Source Print -InstanceId 1073741834 -after $tm1
Опытные мелочи-6, или «Учет и контроль печатника Ивана Федорова»