#powershell
Вопрос:
Очень странно. Я пытался обновить oh-my-posh с v2 до v3, метод задокументирован здесь. Однако, когда я выполняю команду
Update-Module -Name oh-my-posh -Scope CurrentUser
Powershell показывает
Update-Module : A parameter cannot be found that matches parameter name 'Scope'.
At line:1 char:32
Update-Module -Name oh-my-posh -Scope CurrentUser
~~~~~~
CategoryInfo : InvalidArgument: (:) [Update-Module], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Update-Module
Я видел, как многие люди -Scope
очень часто использовали этот параметр. Я не понимаю, почему мой powershell не может найти этот параметр.
Используя Windows (встроенный) Powershell, $PSVersionTable:
PSVersion 5.1.19041.1023
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1023
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Комментарии:
1. Можете ли вы показать результат
Get-Command Update-Module
?
Ответ №1:
Версия Update-Module
, поставляемая с версиями Windows PowerShell до версии v5[1], по — видимому, не имела -Scope
параметра- см. Связанный раздел справки.
В разделе справки указано, какая область является целевой, подразумевается в зависимости от того, повышен ли уровень сеанса PowerShell (запуск от имени администратора), в котором AllUsers
область является целевой или нет, и в этом случае CurrentUser
подразумевается.
Однако вы должны иметь возможность обновить PowerShellGet
модуль, частью которого является Update-Module
командлет, с помощью галереи PowerShell, которая впоследствии должна предоставить вам -Scope
параметр:
# Run from an ELEVATED session.
# Initial upgrade to the latest version from the PowerShell Gallery.
# Thereafter, use `Update-Module PowerShellGet` to update.
Install-Module -Scope AllUsers PowerShellGet -Force # Add -Verbose for details.
[1] Я вижу, что ваша версия v5.1, но ваш PowerShellGet
модуль, похоже, устарел; возможно, более старая версия, установленная вручную, затеняет комплектную версию.
Комментарии:
1. Как ни странно, я это делаю
Uninstall-Module oh-my-posh
, перезапускаю PS, делаюInstall ... -Scope ...
снова, это волшебным образом работает. Я понятия не имею, что происходит, но удаление, похоже, решило мою проблему.2. @Neo, удаление и переустановка звучит как жизнеспособный обходной путь (
Install-Module
в отличиеUpdate-Module
-Scope
от того, что , насколько я знаю, всегда был параметр), но вы пробовали обновитьPowerShellGet
модуль?3. Нет. Как мне это сделать? Может
Update-Module PowerShellGet
быть ?4. @Neo, используйте команду в ответе; первоначально, чтобы переопределить версию в комплекте, вы должны использовать
Install-Module -Force
; после этого вы можете использоватьUpdate-Module
.