Para (3), você pode escrevê-lo como uma função em seu perfil (por exemplo, %USERPROFILE%\My Documents\WindowsPowerShell\profile.ps1
):
function hh ([string] $word) {
Get-History -c 1000 | where {$_.commandline.contains($word)}
}
Então:
hh foo
Mas o Powershell é melhor considerado como uma linguagem de script do que como um shell interativo, porque o console subjacente ainda é o cmd.exe com todas as suas limitações.
Portanto, é F7 para o histórico interativo, F3 para copiar o comando anterior, F1 para copiar um único caractere, F2 para copiar o comando anterior até um caractere específico, etc, etc.