PowerShell/scripts/search-files.ps1

42 lines
1.1 KiB
PowerShell
Raw Normal View History

2023-10-31 13:03:45 +01:00
<#
2021-07-13 21:10:02 +02:00
.SYNOPSIS
2021-10-16 16:50:10 +02:00
Searches for a pattern in files
2021-10-04 21:29:23 +02:00
.DESCRIPTION
2022-01-30 10:49:30 +01:00
This PowerShell script searches for a pattern in the given files.
2021-10-16 16:50:10 +02:00
.PARAMETER pattern
Specifies the search pattern
.PARAMETER files
Specifies the files
2021-07-13 21:10:02 +02:00
.EXAMPLE
2021-09-24 17:19:49 +02:00
PS> ./search-files UFO C:\Temp\*.txt
2021-07-13 21:10:02 +02:00
.LINK
https://github.com/fleschutz/PowerShell
2022-01-30 10:49:30 +01:00
.NOTES
2022-09-06 21:42:04 +02:00
Author: Markus Fleschutz | License: CC0
2020-12-29 15:14:21 +01:00
#>
2020-12-29 12:03:53 +01:00
2021-09-27 09:47:41 +02:00
param([string]$pattern = "", [string]$files = "")
2020-12-29 12:03:53 +01:00
2021-09-27 09:47:41 +02:00
function ListLocations { param([string]$Pattern, [string]$Path)
2021-01-02 14:02:16 +01:00
$List = Select-String -Path $Path -Pattern "$Pattern"
foreach ($Item in $List) {
New-Object PSObject -Property @{
'Path' = "$($Item.Path)"
'Line' = "$($Item.LineNumber)"
'Text' = "$($Item.Line)"
}
}
2021-09-27 09:47:41 +02:00
write-output "(found $($List.Count) locations with pattern '$pattern')"
2021-01-02 14:02:16 +01:00
}
2020-12-29 12:03:53 +01:00
try {
2021-09-27 09:47:41 +02:00
if ($pattern -eq "" ) { $pattern = read-host "Enter search pattern" }
if ($files -eq "" ) { $files = read-host "Enter path to files" }
2021-07-15 15:51:22 +02:00
2021-09-27 09:47:41 +02:00
ListLocations $pattern $files | format-table -property Path,Line,Text
2021-09-27 10:09:45 +02:00
exit 0 # success
2020-12-29 12:03:53 +01:00
} catch {
2022-04-13 12:06:32 +02:00
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
2020-12-29 12:03:53 +01:00
exit 1
}