Так вот, на прошлой стажировке меня познакомили с рыбкоподобными самовнушениями для зш.
По сути, он показывает вам предложения, когда вы вводите их в свою оболочку, и получает эти предложения из истории вашей оболочки. Это невероятно полезно для длинных команд (например, Docker), но полезно даже для повседневного использования.
Итак, сегодня, Хэллоуин 2022, я решил, что пришло время поискать что-то подобное на Windows, что привело к цепочке проблем и решений, которые стали настолько смешными, что я должен был написать об этом. Следуйте вперед, чтобы увидеть, если вы получаете те же ошибки.
Оглавление:
- Учебник OGl
- Исправить, установив предварительную версию PSReadLine
- Исправить, обновив PowerShellGet
- Исправление принудительной установки 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.
Хорошо. Это расстраивает. Поэтому я ищу это сообщение об ошибке и нахожу это:
Это предлагает запустить
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
…и это сработало! Я прошел путь героя, имея возможность использовать все, что я узнал на этом пути, чтобы добраться туда, куда я хотел:
Над чем я снова работал?