powershell - 找不到范围参数

Neo*_*Neo 6 powershell

很奇怪。我试图将oh-my-posh从 v2 升级到 v3,该方法记录在此处。但是,当我运行命令时

Update-Module -Name oh-my-posh -Scope CurrentUser
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我见过很多人-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
Run Code Online (Sandbox Code Playgroud)

mkl*_*nt0 3

Windows PowerShell v5 [1]Update-Module之前版本附带的版本显然没有参数 - 请参阅链接的帮助主题。-Scope

帮助主题表明,PowerShell 会话是否提升(以管理员身份运行)暗示了哪个范围是目标范围,在哪种情况下范围是目标范围,在哪种情况下是隐含的。AllUsersCurrentUser

但是,您应该能够通过 PowerShell Gallery 更新cmdlet所属的PowerShellGetmodule ,此后它应该为您提供一个参数:Update-Module-Scope

# Run from an ELEVATED session.
# Initial upgrade to the latest version from the PowerShell Gallery.
# Thereafter, use `Update-Module PowerShellGet` for future updates.
# Add -Verbose to see details.
Install-Module -Scope AllUsers PowerShellGet -Force -AllowClobber 
Run Code Online (Sandbox Code Playgroud)

Phillip Ngan报告称,这-AllowClobber是解决名称冲突所必需的。


[1] 我看到你的版本是 v5.1 - 但你的PowerShellGet模块似乎已经过时了;可以想象,手动安装的旧版本会覆盖捆绑版本。