ps/Modules/Cole.PowerShell.Developer/Public/Search-History.ps1
2023-05-30 22:51:22 -07:00

40 lines
1.3 KiB
PowerShell

function Search-History {
<#
.SYNOPSIS
Used to look for previous commands in your current or PSReadLine buffers
#>
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[string]$Find,
[switch]$Interactive,
[switch]$SkipMultilines,
[switch]$OnlyMultilines,
[switch]$SkipLongLines,
[Parameter()]
[string[]]$AdditionalPath
)
$logLead = Get-LogLeadName
if ($SkipMultilines -and $OnlyMultilines) {
throw "$logLead : You can't specify both skip and only multilines"
}
if ($Interactive) {
Get-HistoryEntries -SkipMultilines:$SkipMultilines -OnlyMultilines:$OnlyMultilines -SkipLongLines:$SkipLongLines -AdditionalPath $AdditionalPath | ? {$_ -like "*$Find*"} | Get-Unique | more
} else {
$found = @()
$entries = (Get-HistoryEntries -SkipMultilines:$SkipMultilines -OnlyMultilines:$OnlyMultilines -SkipLongLines:$SkipLongLines -AdditionalPath $AdditionalPath)
foreach ($entry in $entries) {
if (($entry -join '').IndexOf($Find) -gt -1) {
if ($found -notcontains $entry.Trim()) {
$found += $entry.Trim()
}
}
}
return $found
}
}
# New-Alias -Name hist -Value Search-History