23
23
)
24
24
25
25
# Function to parse datetime and handle potential errors
26
- function Parse-DateTime ($dateString )
26
+ <#
27
+ . SYNOPSIS
28
+ A brief description of the Parse-DateTime function.
29
+
30
+ . DESCRIPTION
31
+ A detailed description of the Parse-DateTime function.
32
+
33
+ . PARAMETER dateString
34
+ A description of the dateString parameter.
35
+
36
+ . EXAMPLE
37
+ PS C:\> Parse-DateTime -dateString $dateString
38
+
39
+ . NOTES
40
+ Additional information about the function.
41
+ #>
42
+ function Parse-DateTime
27
43
{
44
+ param
45
+ (
46
+ [Parameter (Mandatory = $true ,
47
+ Position = 1 )]
48
+ $dateString
49
+ )
50
+
28
51
try
29
52
{
30
53
return [datetime ]::ParseExact($dateString , " yyyy-MM-dd HH:mm:ss.fffffff" , [System.Globalization.CultureInfo ]::InvariantCulture)
@@ -37,8 +60,37 @@ function Parse-DateTime($dateString)
37
60
}
38
61
39
62
# Function to process a single CSV file
40
- function Process-CsvFile ($csvPath , $gapThreshold )
63
+ <#
64
+ . SYNOPSIS
65
+ A brief description of the Process-CsvFile function.
66
+
67
+ . DESCRIPTION
68
+ A detailed description of the Process-CsvFile function.
69
+
70
+ . PARAMETER csvPath
71
+ A description of the csvPath parameter.
72
+
73
+ . PARAMETER gapThreshold
74
+ A description of the gapThreshold parameter.
75
+
76
+ . EXAMPLE
77
+ PS C:\> Process-CsvFile -csvPath 'value1' -gapThreshold 'value2'
78
+
79
+ . NOTES
80
+ Additional information about the function.
81
+ #>
82
+ function Process-CsvFile
41
83
{
84
+ param
85
+ (
86
+ [Parameter (Mandatory = $true ,
87
+ Position = 1 )]
88
+ [string ]$csvPath ,
89
+ [Parameter (Mandatory = $true ,
90
+ Position = 2 )]
91
+ [int ]$gapThreshold
92
+ )
93
+
42
94
# Read CSV file and sort by TimeCreated
43
95
$events = Import-Csv - Path $csvPath |
44
96
Where-Object { $_.TimeCreated -ne $null -and $_.TimeCreated -ne ' ' } |
@@ -87,7 +139,7 @@ function Process-CsvFile($csvPath, $gapThreshold)
87
139
}
88
140
89
141
# Get all CSV files matching the pattern
90
- $csvFiles = Get-ChildItem - Path $Path - Filter " *_EvtxECmd_Output.csv"
142
+ $csvFiles = Get-ChildItem - Recurse - Path $Path - Filter " *_EvtxECmd_Output.csv"
91
143
92
144
foreach ($csvFile in $csvFiles )
93
145
{
@@ -118,8 +170,8 @@ foreach ($csvFile in $csvFiles)
118
170
# SIG # Begin signature block
119
171
# MIIvngYJKoZIhvcNAQcCoIIvjzCCL4sCAQExDzANBglghkgBZQMEAgEFADB5Bgor
120
172
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
121
- # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB/yZwG1Fc/Zo58
122
- # iMk6Hew7Eq9NL/jNDLynTi2qapKhaKCCKKMwggQyMIIDGqADAgECAgEBMA0GCSqG
173
+ # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBbDXoTTPdvm6KX
174
+ # lpJ/k9Jj9fVuXFtZEXbrpGxO63SzUaCCKKMwggQyMIIDGqADAgECAgEBMA0GCSqG
123
175
# SIb3DQEBBQUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNo
124
176
# ZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1p
125
177
# dGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2VydmljZXMwHhcNMDQwMTAx
@@ -339,36 +391,36 @@ foreach ($csvFile in $csvFiles)
339
391
# 9lAXRaV/0x/qHtrv6DGCBlEwggZNAgEBMGgwVDELMAkGA1UEBhMCR0IxGDAWBgNV
340
392
# BAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29k
341
393
# ZSBTaWduaW5nIENBIFIzNgIQNZ6LJbr/UQt8TtHttsJpJDANBglghkgBZQMEAgEF
342
- # AKBMMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMC8GCSqGSIb3DQEJBDEiBCAO
343
- # GNsPhUX+zDiJ09tLs23oZ3uBCqnUQdEvO3IhQpDNYDANBgkqhkiG9w0BAQEFAASC
344
- # AgBGhizi9OrUH24/xIYV4hmHH7/T/Rq39N0/+6Q2DmcW7NMTyck5107vyHnkbXKA
345
- # SfzoIaP9t7Z2ud2hxBBRxSvTZl90qmPozOTRf93WWIwtl0UiE9GcY7nF2gZ70bPc
346
- # Ygyqf5iLL56qCAofRqJlq3ojuSPvx+3zNB5upS2RumBCOCNp3GkQoKVcaIfdfipG
347
- # yhzhaT84vOg06h974hjn139iWrZ6/hE/Zx0NzhEAjh4hqM3yCbyBTEpoOfqY/5Kf
348
- # MTFDG/ni1Tsrqj9Emx/hZRw2LRNMG2L1sTohrgsvZkCVBrjfVJVAnlvubQMuo19q
349
- # b4dR3pZgoltE9DIxwPSheTQE/SRyNih3jB/ZEWpzIS+D45dteAaLLTMPKev1a/ZP
350
- # IrvxRMCNVSUYSzR9XpJ0HLVNwByedbWUgSkHq7QRrOzTyUlfdJ5YIDGQbk0SokQP
351
- # My01xWcvI/q/1QOXO2FDloUQvfe3ZTN7s1C+ho110o/aD0/68ZvApP+R2qCifE6m
352
- # sGUni8SXZhxkzMLI+5SMD5eFnH109HiKKvqdtFSQmEYYHVP/O8CEd0TVqgTDtaC/
353
- # oVUmHoVj2v6508JdcKg3cD8BjIKRNL23khtBirUqKSRwk+tUkbZK6UwUmGgxPwWB
354
- # 4rA+nSOLJ1glMagy4RqbMInysyRGttq82Uq8rlKd0WQ8YaGCA2wwggNoBgkqhkiG
394
+ # AKBMMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMC8GCSqGSIb3DQEJBDEiBCDK
395
+ # 5yXIUs7jhybN8F9CSiuu94EYHfpsj+vl30x++vwhzjANBgkqhkiG9w0BAQEFAASC
396
+ # AgBcYWmX9CIETTX21WH+jrmaGRk0MPoNI+/KOBjhywambzZebZxNt+SNDGlihB7U
397
+ # Q7cz2n2wSuwDckXvpCB4palJfdT8XRawNj3vMc/zJPqamToxoRCOeOf1WxdP/Q5B
398
+ # AZNEhYf0oOcvIeMLOIggDnMQiEtFtrNpT3ELpoztwRQN9MzpHQwu6TQpyvA5neQ5
399
+ # 6q1vwwpDdFctzsIUpXRBLLD/wkLQp2isU4ppJEA3AQ6UmZHzwuFQ1FIZro06t4Qq
400
+ # yVs4+SGJBkNLUa/HA3IdLexBfFFL4MDK8aAlsSXbnSl1tinzaBED95CrZ7XNFDzu
401
+ # ShLZKpCS2jGnmZfH+iqzIG4oiX9FCnU063wtJIQt5GR+cgVDe0nplaL4uhaHotri
402
+ # IvY4Glz+pw9aoSY+xOo5bzHpN1WLtiCWJ7LbodozJ3nkVdrl+eaTRwiJrAanEmg/
403
+ # 5ajZ0tlgQDvQUPi0eqCC9ToUfAz9Isbj2RQy2ObHApdc4cmSEjYpYBHCeGb5lnMb
404
+ # 8Asn15QWeMGA/xMbJeETHPEP91m53TA/94pNeo11igbCoi2iOzTEdeFWUxMp9wpI
405
+ # b3fwA7KLiNOuBttN/TYAWL//N/Jku3tRoPOAcjytL8vcNdaSeeQ3PtORBquJJVyh
406
+ # UXz4IxoNvxi3bDs+FxMzGqNbeo4QzKeTVsgnjc9D0SPPt6GCA2wwggNoBgkqhkiG
355
407
# 9w0BCQYxggNZMIIDVQIBATBvMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
356
408
# YWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBD
357
409
# QSAtIFNIQTM4NCAtIEc0AhABB2SbCLCn/n3WVKjy9Cn2MAsGCWCGSAFlAwQCAaCC
358
410
# AT0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQw
359
- # NzI2MDMwMDA0WjArBgkqhkiG9w0BCTQxHjAcMAsGCWCGSAFlAwQCAaENBgkqhkiG
360
- # 9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQg2Qsict3neLfRi3XMyZ8vtofoiYPy+kYz
361
- # 3JbSh56x8MgwgaQGCyqGSIb3DQEJEAIMMYGUMIGRMIGOMIGLBBRE05OczRuIf4Z6
411
+ # OTI1MTk1NDA5WjArBgkqhkiG9w0BCTQxHjAcMAsGCWCGSAFlAwQCAaENBgkqhkiG
412
+ # 9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQgf85xGCr9YdeRjLHySe2rXd1ULCwArVxX
413
+ # ltnQ1OoMWVUwgaQGCyqGSIb3DQEJEAIMMYGUMIGRMIGOMIGLBBRE05OczRuIf4Z6
362
414
# zNqB7K8PZfzSWTBzMF+kXTBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFs
363
415
# U2lnbiBudi1zYTExMC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0Eg
364
416
# LSBTSEEzODQgLSBHNAIQAQdkmwiwp/591lSo8vQp9jANBgkqhkiG9w0BAQsFAASC
365
- # AYCs5fDpDOLJaOzc+P1EQDLPAtQ995/l5xqG9R6DcdOV72Mq7w0BUWVCPApWo9e9
366
- # XG/9V+gg9gqrVtul5Tvb2t4hvJgI5/aRuSFqaZO3sGSb5vOMIjmCjq26ZdN6vmNP
367
- # cQ8ubGL8Pnn4v+Vy4de9Ot150d5D5Mzf6q7hdDYdzykD90IgJWkAxoDgOeExyG5C
368
- # cl3THG3MG+xYyvGw6MfFp/QZ1KMBfN1o4+IiR60wQ1gET0WSC0Lnu38TgO6yrj7J
369
- # xE4akHTJ8VXSmsfY0F+h9e0Gxb2dO3STaV833uXj24Br7CXjgUnXYkNHd4bOZvT5
370
- # aJBvJe8BCNCkIlfIhMb83z/hC1J8+6zHNNGCE56bjf6zwbvtZ7iXd0UkhfF7hiwA
371
- # i7SmWewiMR+E8wHwMnzRMCfnScGqCbY3XgityWsuX6JJ9WDqqBlKZfSrJJrrIDco
372
- # LzSePVwiCQr7kgWV/G2/YDB9fBM62Pxr20r8zherjfh9da1elobrsVh3Pg6hpC4A
373
- # pAM =
417
+ # AYArPAxYuY9/538yqQbsNRM68XsqxskVi3KvNnvcLdioqDj5H82YIR71zViZTHZ6
418
+ # nhmNHR8zViH9d1gen9LTgLAljqFzzCnrppP4/59/Hk21FWISKDc5InqAQgHnxbtO
419
+ # t+pqEzwe9BbLbjHpFZ4CvBjjZAUnE9lpmy/DxjDti3mVCUU80hvCp/FfRU5YnNlA
420
+ # uvTWcLWi33JjOeJkNhk52e8JQQU2h2oDKq0ARJH5t9GFVLEiY5gy4dWun3gZleux
421
+ # NlVLt3peMcuGYHnUVQa69rJelUg6b3TI4I2ewGxWa4i3fIuzuVgdDXPXdqbaeKHI
422
+ # rPYkPqVOj3M+EB+JYSQsMbSUQSMC+OVXCZMSzng3iKeD7jNMHGMC7DO9LJbmQqNP
423
+ # GABTfKKwzo9zhj4O9ynhWk2CKP7uVmeoh0aAUMCbHqBqu34Eyj6tQfajng1oJ6C6
424
+ # 3wV3qm1IcWBNU7ZoTOHlbTaYtIc3NWgBRr8ddQ4aI+Db8wEOaeIRAT2CUA2yosXj
425
+ # zv8 =
374
426
# SIG # End signature block
0 commit comments