powershell -Параметр области действия не найден

#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 .