Вот альтернативный подход, который сохраняет вашу историю без использования другого ярлыка PowerShell.
Взято из https://software.intel.com/en-us/blogs/2014/06/17/giving-powershell-a-persistent-history-of-commands
Откройте PowerShell в режиме администратора и выясните, какая у вас версия PowerShell, выполнив следующую команду:
$PSVersionTable.PSVersion
Для запуска вам понадобится версия выше 3. Если у вас более старая версия, обновите ее.
Разрешите PowerShell импортировать или использовать сценарии, включая модули, выполнив следующую команду:
set-executionpolicy remotesigned
Установите PsGet и установите нужные вам модули, выполнив следующие команды:
(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
import-module PsGet
install-module PsUrl
install-module PSReadline
Создайте следующий скрипт
$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History }
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
Сохраните файл как C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
, где вы должны заменить его на правильное имя папки на вашем ПК. Не забудьте изменить опцию «сохранить как тип» для всех файлов.
Закройте PowerShell и снова откройте его, чтобы он начал использовать сценарий, который мы сохранили.
Впредь,
get-history
Получит последние несколько сотен команд, которые вы ввели, и вы можете перемещаться между ними с помощью клавиш со стрелками.