【问题标题】:Powershell: Get-Package: A parameter cannot be found that matches parameter name 'Scope'Powershell:Get-Package:找不到与参数名称匹配的参数\'Scope\'
【发布时间】:2022-08-05 15:48:25
【问题描述】:

我正在 Docker Desktop (Windows) 中构建基于 Nanoserver 的 docker 映像。

我的 Dockerfile 看起来像这样:

# Nano Server - IIS

FROM mcr.microsoft.com/powershell:lts-nanoserver-20h2-20220318

SHELL [\"pwsh\", \"-Command\", \"$ErrorActionPreference = \'Stop\'; $ProgressPreference = \'SilentlyContinue\';\"]

USER ContainerAdministrator

RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \\
    Install-PackageProvider -Name NanoServerPackage -Force -Scope AllUsers ; \\
    Get-Package -Name Microsoft-NanoServer-IIS-Package -ProviderName NanoServerPackage -Scope AllUsers -Force -Verbose \\
       | Install-Package -Name Microsoft-NanoServer-IIS-Package -ProviderName NanoServerPackage -Scope AllUsers -Force -Verbose ; \\
    Write-Output \"done\"

USER ContainerUser 

当我运行docker build 时,RUN 命令失败并出现错误:\"Get-Package: A parameter cannot be found that match parameter name \'Scope\'.\"

根据Powershell docsGet-Package 确实采用了-Scope 参数。我在这里想念什么?

$PSVersionTable 输出:

Name                           Value
----                           -----
PSVersion                      7.2.2
PSEdition                      Core
GitCommitId                    7.2.2
OS                             Microsoft Windows 10.0.19042
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0 

    标签: dockerfile docker-build powershell-core


    【解决方案1】:

    我只是在为同样的问题苦苦挣扎,或者至少是类似的问题(对我来说是Install-Package),现在的问题。

    解决方法/解决方案

    我们的解决方法是在 powershell 环境中简单地调用命令:

    powershell Install-Package -Name My.Package -Source MySource -Scope CurrentUser -Force -AllowPrereleaseVersions
    

    阐述与观察

    我用我们想要的调用在我们的构建服务器上运行了一些测试(为了下面的详细说明,我只删除了一些基本要素,包括屏幕截图):

    Install-Package -Name My.Package -Source MySource -Scope CurrentUser -Force -AllowPrereleaseVersions
    
    • 调用失败,pwsh (7.2.5) 出现您描述的错误。
    • 但是,当我使用 powershell (5.1.19041.1682) 调用时,它成功了。

    更奇怪的是:当我启动 pwsh 时,调用失败,如上所述。但是,当我切换到 powershell,回到 pwsh 并再次执行命令时,它会成功,您可以在屏幕截图中验证:

    这对我来说仍然是一个谜,如果有人能详细说明这种行为,我会很高兴。

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2019-10-17
      相关资源
      最近更新 更多