Я создаю сценарий на основе графического интерфейса, который, когда пользователь вводит имя пользователя, извлекает файл журнала с разделителями-запятыми с информацией, такой как дата и время входа в систему, машина, в которую они вошли и т. д. В качестве части графического интерфейса я хотел бы использовать TreeView для представления им списка MAC-адресов, в которые вошло имя пользователя, в которое они вошли. В некоторых случаях существует много дубликатов, для разных периодов времени в течение года. Я хотел бы иметь возможность отображать уникальные экземпляры в качестве родительских узлов, а затем для каждого повторяющегося экземпляра добавить его в качестве дочернего узла в соответствующий родительский узел вместе с тем временем, когда они вошли в систему.Создание родительских и дочерних узлов с древовидной структурой и повторяющимися строками
У меня есть то, что я думаю, является частью решения, добавлением уникальных узлов и его работой, как я ожидал, но мне довольно сложно добавить дублирующие узлы в качестве дочерних узлов к соответствующим родительским узлам.
Ех: если пользователь вошел в имя хоста COMP1, 6 раз в течение файла журнала, я хочу отобразить COMP1 в качестве родительского узла, и если пользователи нажимают на символ +, они будут видеть 6 экземпляров, перечисленных ниже, с помощью дата собственности прилагается.
Вот пример из файла журнала .CSV, свойства в верхней строке:
Date,EventType,ConnectionType,UserDomain,UserLogonTime,LogonType,HostName,HostAddress,HostStartTime,RemoteStationName,RemoteStationAddress
3/24/2015 12:49:58 PM,Logon,Local,DOMAIN,3/24/2015 12:49:13 PM,CONSOLE,F0A8F0B01660,10.10.10.11,3/24/2015 12:27:15 PM,N/A,N/A
3/26/2015 12:32:56 PM,TS Session Connected,Remote-RDP,DOMAIN,3/24/2015 7:13:19 AM,CONSOLE,VFP3077V,10.10.10.10,3/23/2015 6:56:32 AM,Dingus,10.10.96.72
Свойства Я выбирая из файла журнала являются имя хоста и дата.
Вот некоторые из моего текущего кода:
$array = Import-Csv $filepath\$username.txt | Where-Object {$_.EventType -eq "TS Session Connected" -or $_.EventType -eq "Logon"} | select -ExpandProperty hostname | sort -Unique
$array2 = Import-Csv $filepath\$username.txt | Where-Object {$_.EventType -eq "TS Session Connected" -or $_.EventType -eq "Logon"} | select -ExpandProperty Date | sort -Unique
#Loops through and singles out each host name, and adds it as a treenode
for ($i = 0; $i -lt $array.Count; $i++) {
$node = $treeviewHostnames.Nodes.Add($array[$i]) | Out-Null
}
TreeView объект:
$treeviewHostnames = New-Object System.Windows.Forms.TreeView
$treeviewHostnames.size = New-Object drawing.Size @(300,378)
$treeviewHostnames.Location = New-Object drawing.Size @(380,165)
$treeviewHostnames.Scrollable = $true
Это добавляет уникальный список имен хостов для моего объекта TreeView, но у меня трудное время, добавляя конкретные повторяющиеся дочерние имена хостов для уникальных родительских имен хостов.
У вас случайно есть образец данных для использования, поэтому нам не нужно изобретать велосипед? – Matt
Обновленный оригинальный пост, полностью забыл включить данные из журнала, спасибо! – dingusxmcgee