首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell不会使用install -模块安装几乎任何模块。

Powershell不会使用install -模块安装几乎任何模块。
EN

Stack Overflow用户
提问于 2019-01-13 00:22:47
回答 2查看 40.5K关注 0票数 9

我的Powershell v5.1不会使用install-module自动安装几乎任何模块,而手动安装会工作。

首先,当我运行install-module时,它会下载模块,然后抛出一个错误,比如pscx模块:

代码语言:javascript
复制
PackageManagement\Install-Package : Package 'Pscx' failed to be installed because: Specified cast is not valid.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.0.4\PSModule.psm1:9307 char:21
+ ...          $null = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult: (Pscx:String) [Install-Package], Exception
    + FullyQualifiedErrorId : Package '{0}' failed to be installed because: {1},Microsoft.PowerShell.PackageManag
   ement.Cmdlets.InstallPackage

我现在能做的就是手动下载模块并自己使用import-module。当我试图通过这个cmdlet安装任何模块时,几乎每次都会发生错误。我如何解决这个问题?

对于疑难解答,Get-PSRepository给出了以下内容:

代码语言:javascript
复制
PS C:\> Get-PSRepository

Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Trusted              https://www.powershellgallery.com/api/v2
GalleryRolling            Trusted              https://www.poshtestgallery.com/api/v2/

编辑:

在尝试使用Save-Module时得到相同的错误

代码语言:javascript
复制
PS C:\> Find-Module -Name 'pscx' | Save-Module -Path "G:\Temp\System Documents\WindowsPowerShell\Modules"
WARNING: Package 'Pscx' failed to be installed because: Specified cast is not valid.
WARNING: Package 'Pscx' failed to install.
PackageManagement\Save-Package : Unable to save the module 'Pscx'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.0.4\PSModule.psm1:11331 char:25
+ ...             $null = PackageManagement\Save-Package @PSBoundParameters
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Microsoft.Power...ets.SavePackage:SavePackage) [Save-Packag
   e], Exception
    + FullyQualifiedErrorId : ProviderFailToDownloadFile,Microsoft.PowerShell.PackageManagement.Cmdlets.Save
   Package

它下载了包,然后显示WARNING

单独使用Find-Module时,结果是:

代码语言:javascript
复制
PS C:\> Find-Module -Name 'pscx'

Version              Name                                Repository           Description
-------              ----                                ----------           -----------
3.3.2                Pscx                                PSGallery            PowerShell Community Extensi...

编辑2:

哦,我忘了说,在下载进程栏消失后,在特定的下载文件夹中没有创建任何文件。这是否意味着下载失败了?

编辑3: @Sage Pourpre

  1. 调试日志
  2. 我总是以管理员的身份运行PS。
  3. -Scope CurrentUser抛出相同的错误。
  4. PS C:\> Uninstall-Module -Name "PowerShellGet"PS C:\> Uninstall-Script -Name "PowerShellGet" -RequiredVersion 2.0.3都会产生相同的结果。 PackageManagement\卸载包:未找到指定搜索条件和脚本名称“PowerShellGet”的匹配。C:\ Files\WindowsPowerShell\Modules\PowerShellGet\2.0.4\PSModule.psm1:12343 char:21
代码语言:javascript
复制
- ...        $null = PackageManagement\Uninstall-Package @PSBoundParameters
- + CategoryInfo          : ObjectNotFound: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstal l-Package], Exception + FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage

然后我试着列出可用的模块:

代码语言:javascript
复制
PS C:\> Get-Module -ListAvailable


    Directory: G:\Temp\System Documents\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Binary     2.7.1.7    ISESteroids                         {Get-PSSharperData, Add-SteroidsContextMenuComma...
Script     1.2        Use-RawPipeline                     {Invoke-NativeCommand, Receive-RawPipeline, Get-...


    Directory: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     1.0.1      Microsoft.PowerShell.Operation.V... {Get-OperationValidation, Invoke-OperationValida...
Script     1.2.4      PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider,...
Script     4.5.0      Pester                              {Describe, Context, It, Should...}
Script     2.0.4      PowerShellGet                       {Find-Command, Find-DSCResource, Find-Module, Fi...
Script     2.0.3      PowerShellGet                       {Find-Command, Find-DSCResource, Find-Module, Fi...
Script     1.2        PSReadline                          {Get-PSReadlineKeyHandler, Set-PSReadlineKeyHand...


    Directory: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   1.0.0.0    AppBackgroundTask                   {Disable-AppBackgroundTaskDiagnosticLog, Enable-...
Manifest   2.0.0.0    AppLocker                           {Get-AppLockerFileInformation, Get-AppLockerPoli...
Manifest   1.0.0.0    AppvClient                          {Add-AppvClientConnectionGroup, Add-AppvClientPa...
Manifest   2.0.0.0    Appx                                {Add-AppxPackage, Get-AppxPackage, Get-AppxPacka...
Script     1.0.0.0    AssignedAccess                      {Clear-AssignedAccess, Get-AssignedAccess, Set-A...
Manifest   1.0.0.0    BitLocker                           {Unlock-BitLocker, Suspend-BitLocker, Resume-Bit...
etc...

Get-InstalledModule

代码语言:javascript
复制
PS C:\> Get-InstalledModule -Name "PowerShellGet" -RequiredVersion 2.0.3
PackageManagement\Get-Package : No match was found for the specified search criteria and module names
'PowerShellGet'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.0.4\PSModule.psm1:9050 char:9
+         PackageManagement\Get-Package @PSBoundParameters | Microsoft. ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...lets.GetPackage:GetPackage) [Get-Package],
   Exception
    + FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackage
EN

回答 2

Stack Overflow用户

发布于 2020-06-01 19:26:26

最终解决办法是:

代码语言:javascript
复制
[Net.ServicePointManager]::SecurityProtocol = "tls12"

解决方案来自以下vanBrenk发布的博客

试图在代理后面安装一个PowerShell模块?您可能会收到以下错误:“无法解决包源‘https://www.powershellgallery.com/api/v2/'’”。不允许通过你的代理服务器..。现在,您运行的每个命令都通过代理发送和允许。

票数 9
EN

Stack Overflow用户

发布于 2019-01-13 01:14:28

如果您只是使用默认回购,则没有理由指定它。

这样试试..。

代码语言:javascript
复制
Find-Module -Name 'pscx' | 
Save-Module -Path "$env:USERPROFILE\Documents\WindowsPowerShell\Modules"
Install-Module -Name 'pscx'

您可以在同一站点上有多个版本的PowerShell,一般不会影响安装模块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54165095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档