Skip to content

Commit 8eedf07

Browse files
committed
add recurse, add scaffolding for comment-based help, enhance parameters for functions
1 parent f2eaf48 commit 8eedf07

File tree

1 file changed

+82
-30
lines changed

1 file changed

+82
-30
lines changed

EvtxECmdGapFinder.ps1

Lines changed: 82 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,31 @@ param
2323
)
2424

2525
# 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
2743
{
44+
param
45+
(
46+
[Parameter(Mandatory = $true,
47+
Position = 1)]
48+
$dateString
49+
)
50+
2851
try
2952
{
3053
return [datetime]::ParseExact($dateString, "yyyy-MM-dd HH:mm:ss.fffffff", [System.Globalization.CultureInfo]::InvariantCulture)
@@ -37,8 +60,37 @@ function Parse-DateTime($dateString)
3760
}
3861

3962
# 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
4183
{
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+
4294
# Read CSV file and sort by TimeCreated
4395
$events = Import-Csv -Path $csvPath |
4496
Where-Object { $_.TimeCreated -ne $null -and $_.TimeCreated -ne '' } |
@@ -87,7 +139,7 @@ function Process-CsvFile($csvPath, $gapThreshold)
87139
}
88140

89141
# 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"
91143

92144
foreach ($csvFile in $csvFiles)
93145
{
@@ -118,8 +170,8 @@ foreach ($csvFile in $csvFiles)
118170
# SIG # Begin signature block
119171
# MIIvngYJKoZIhvcNAQcCoIIvjzCCL4sCAQExDzANBglghkgBZQMEAgEFADB5Bgor
120172
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
121-
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB/yZwG1Fc/Zo58
122-
# iMk6Hew7Eq9NL/jNDLynTi2qapKhaKCCKKMwggQyMIIDGqADAgECAgEBMA0GCSqG
173+
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBbDXoTTPdvm6KX
174+
# lpJ/k9Jj9fVuXFtZEXbrpGxO63SzUaCCKKMwggQyMIIDGqADAgECAgEBMA0GCSqG
123175
# SIb3DQEBBQUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNo
124176
# ZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1p
125177
# dGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2VydmljZXMwHhcNMDQwMTAx
@@ -339,36 +391,36 @@ foreach ($csvFile in $csvFiles)
339391
# 9lAXRaV/0x/qHtrv6DGCBlEwggZNAgEBMGgwVDELMAkGA1UEBhMCR0IxGDAWBgNV
340392
# BAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29k
341393
# 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
355407
# 9w0BCQYxggNZMIIDVQIBATBvMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
356408
# YWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBD
357409
# QSAtIFNIQTM4NCAtIEc0AhABB2SbCLCn/n3WVKjy9Cn2MAsGCWCGSAFlAwQCAaCC
358410
# AT0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQw
359-
# NzI2MDMwMDA0WjArBgkqhkiG9w0BCTQxHjAcMAsGCWCGSAFlAwQCAaENBgkqhkiG
360-
# 9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQg2Qsict3neLfRi3XMyZ8vtofoiYPy+kYz
361-
# 3JbSh56x8MgwgaQGCyqGSIb3DQEJEAIMMYGUMIGRMIGOMIGLBBRE05OczRuIf4Z6
411+
# OTI1MTk1NDA5WjArBgkqhkiG9w0BCTQxHjAcMAsGCWCGSAFlAwQCAaENBgkqhkiG
412+
# 9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQgf85xGCr9YdeRjLHySe2rXd1ULCwArVxX
413+
# ltnQ1OoMWVUwgaQGCyqGSIb3DQEJEAIMMYGUMIGRMIGOMIGLBBRE05OczRuIf4Z6
362414
# zNqB7K8PZfzSWTBzMF+kXTBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFs
363415
# U2lnbiBudi1zYTExMC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0Eg
364416
# 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=
374426
# SIG # End signature block

0 commit comments

Comments
 (0)