安装几乎任何模块

安装几乎任何模块

本文介绍了Powershell 不会使用 install-module 安装几乎任何模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 Powershell v5.1 几乎不会使用 install-module 自动安装任何模块,而手动安装确实可以.

My Powershell v5.1 won't install almost any module automatically using install-module whereas manually installation does work.

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

First, when I run install-module, it would download the module then throw an error, say the pscx module:

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 安装任何模块时,几乎每次都会发生该错误.我该如何解决这个问题?

What I can do now is to manually download the module and use import-module myself. The error occurs almost every time when I'm trying to install any module through this cmdlet. How can I address this problem?

对于故障排除,Get-PSRepository 给了我这个:

For troubleshooting, Get-PSRepository gives me this:

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 时遇到同样的错误:

Got the same error when trying to use Save-Module:

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时,结果为:

PS C:\> Find-Module -Name 'pscx'

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

编辑 2:

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

Oh I forgot to say that there are no files created in the specific download folder after the download process bar disappeared. Does that mean the download has failed?

编辑 3:@Sage Pourpre

EDIT 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 产生相同的结果.

  1. Debugging log
  2. I Always run PS as administrator.
  3. -Scope CurrentUser throws the same error.
  4. Both PS C:\> Uninstall-Module -Name "PowerShellGet" and PS C:\> Uninstall-Script -Name "PowerShellGet" -RequiredVersion 2.0.3 produce the same result.

PackageManagement\Uninstall-Package : 未找到指定搜索条件和脚本名称的匹配项'PowerShellGet'.在 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.0.4\PSModule.psm1:12343 char:21

PackageManagement\Uninstall-Package : No match was found for the specified search criteria and script names'PowerShellGet'.At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.0.4\PSModule.psm1:12343 char:21

  • ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ CategoryInfo          : ObjectNotFound: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstal
l-Package], Exception
+ FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.UninstallPackage

然后我尝试列出可用模块:

Then I tried to list available modules:

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

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

推荐答案

最终解决:

[Net.ServicePointManager]::SecurityProtocol = "tls12"

解决方案来自以下 博客范布伦克:

试图在代理后面安装 PowerShell 模块?您可能会收到此错误:无法解析包源https://www.powershellgallery.com/api/v2/".事实证明它不允许通过您的代理服务器 [...] 现在您运行的每个命令都通过代理发送和允许.

这篇关于Powershell 不会使用 install-module 安装几乎任何模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 20:18