40 lines
1.3 KiB
PowerShell
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 |