Локальный модуль установки PowerShell против CurrentUser - PullRequest
0 голосов
/ 16 февраля 2020

Может кто-нибудь объяснить это, пожалуйста?

Import-Module PSReadLine -Scope CurrentUser

Import-Module : Cannot validate argument on parameter 'Scope'.
The argument "CurrentUser" does not belong to the set "Local,Global"
specified by the ValidateSet attribute. Supply an argument that is in the
set and then try the command again.
At line:1 char:37
+     Import-Module PSReadLine -Scope CurrentUser
+                                     ~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Import-Module], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportModuleCommand

Но это прекрасно работает (!)

Install-Module PSScriptAnalyzer -Scope CurrentUser

И это прекрасно работает (!)

Import-Module PSReadLine -Scope Local

Файл справки для Install-Module даже не распознает существование Local|Global, упомянутое в ошибке. -Scope <String> Specifies the installation scope of the module. The acceptable values for this parameter are AllUsers and CurrentUser.

1 Ответ

2 голосов
/ 16 февраля 2020

Эти области действия существенно отличаются (взяты из официальных docs.microsoft.com ):

Import-Module -Scope

Указывает область действия , в которую этот командлет импортирует модуль .

Допустимые значения для этого параметра:

Global . Доступно для всех команд в сеансе. Эквивалентен глобальному параметру.

Local . Доступно только в текущей области.

По умолчанию при вызове командлета Import-Module из командной строки, файла сценария или блока сценариев все команды импортируются в глобальное состояние сеанса. Вы можете использовать параметр -Scope со значением Local для импорта содержимого модуля в область действия скрипта или блока скрипта.

При вызове из другого модуля командлет Import-Module импортирует команды в модуле, включая команды из вложенного модуля. модули, в состояние сеанса вызывающей стороны. Указание -Scope Global или -Global указывает, что этот командлет импортирует модули в состояние глобального сеанса, чтобы они были доступны всем командам в сеансе.

Install-Module -Scope

Указывает область установки модуля. Допустимые значения этого параметра: AllUsers и CurrentUser .

Область действия AllUsers устанавливает модули в месте, доступном для всех пользователей компьютер:

$env:ProgramFiles\PowerShell\Modules

CurrentUser устанавливает модули в месте, доступном только для текущего пользователя компьютера:

$home\Documents\PowerShell\Modules

Когда нет области действия определяется, по умолчанию устанавливается на основе версии PowerShellGet.

  • В PowerShellGet версий 2.0.0 и выше по умолчанию используется CurrentUser, который не требует повышения прав для установки.
  • In Версии PowerShellGet 1.x, по умолчанию AllUsers, для установки которых требуется повышение прав.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...