Так вот, на прошлой стажировке меня познакомили с рыбкоподобными самовнушениями для зш.

По сути, он показывает вам предложения, когда вы вводите их в свою оболочку, и получает эти предложения из истории вашей оболочки. Это невероятно полезно для длинных команд (например, Docker), но полезно даже для повседневного использования.

Итак, сегодня, Хэллоуин 2022, я решил, что пришло время поискать что-то подобное на Windows, что привело к цепочке проблем и решений, которые стали настолько смешными, что я должен был написать об этом. Следуйте вперед, чтобы увидеть, если вы получаете те же ошибки.

Оглавление:

  1. Учебник OGl
  2. Исправить, установив предварительную версию PSReadLine
  3. Исправить, обновив PowerShellGet
  4. Исправление принудительной установки PowerShellGet с помощью Install-Module

1. Учебник OG

Сначала я нашел этот учебник: https://dev.to/animo/fish-like-autosuggestion-in-powershell-21ec

Там написано, что мне нужен PowerShell версии › 5.1, который у меня есть.

Затем он говорит просто запустить (в административной оболочке PowerShell)

Install-Module PSReadLine -RequiredVersion 2.1.0
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History

Легко, верно? Неправильный.

Я получаю сообщение об ошибке:

Set-PSReadLineOption : A parameter cannot be found that matches parameter name ‘PredictionSource’.
...

2. Исправьте, установив предварительную версию PSReadLine.

Я просматриваю ошибку и нахожу ветку Github с проблемами: https://github.com/PowerShell/PSReadLine/issues/2189.

В верхнем предложении здесь говорится просто запустить

Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck

Я пробую это и получаю новое сообщение об ошибке:

Install-Module : A parameter cannot be found that matches parameter name ‘AllowPrerelease’.
...

3. Исправьте, обновив PowerShellGet.

Хорошо. Это расстраивает. Поэтому я ищу это сообщение об ошибке и нахожу это:

https://www.easy365manager.com/install-module-a-parameter-cannot-be-found-that-matches-parameter-name-allowprerelease/

Это предлагает запустить

Update-Module PowerShellGet -Force

Конечно, это дает мне новую ошибку:

Update-Module : Module ‘PowerShellGet’ was not installed by using Install-Module, so it cannot be updated.
...

4. Исправление принудительной установки PowerShellGet с помощью Install-Module

Поиск этой ошибки приводит меня к этой статье: https://evotec.xyz/update-module-module-powershellget-was-not-installed-by-using-install-module-so-it-cannot-be-updated /

В котором говорится об установке PowerShellGet с параметром -Force:

Install-Module PowerShellGet -Force

и… никаких ошибок!

Оттуда я перезапустил PowerShell и пробежался по этому дурацкому связанному списку ошибок:

Update-Module PowerShellGet -Force
Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
Set-PSReadLineOption -PredictionSource History

…и это сработало! Я прошел путь героя, имея возможность использовать все, что я узнал на этом пути, чтобы добраться туда, куда я хотел:

Над чем я снова работал?