powershell - Powershell 几乎不会使用 install-module 安装任何模块
问题描述
我的 Powershell v5.1 不会自动安装几乎任何模块,install-module
而手动安装确实有效。
首先,当我运行时install-module
,它会下载模块然后抛出一个错误,比如 pscx 模块:
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
给我这个:
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
:
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:
哦忘了说下载进程栏消失后,具体下载文件夹中没有创建文件。这是否意味着下载失败?
编辑 3: @Sage Pourpre
- 调试日志
- 我总是以管理员身份运行 PS。
-Scope CurrentUser
抛出同样的错误。两者都
PS C:\> Uninstall-Module -Name "PowerShellGet"
产生PS C:\> Uninstall-Script -Name "PowerShellGet" -RequiredVersion 2.0.3
相同的结果。PackageManagement\Uninstall-Package :找不到与指定搜索条件和脚本名称“PowerShellGet”匹配的内容。在 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
然后我尝试列出可用的模块:
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"
解决方案来自 vanBrenk 发布的以下博客:
试图在代理后面安装 PowerShell 模块?您可能会收到此错误:"Unable to resolve package source 'https://www.powershellgallery.com/api/v2/'"。事实证明,它不允许通过您的代理服务器 [...] 现在您运行的每个命令都通过代理发送并允许。
推荐阅读
- python - 如何在kivy中调整图片大小?
- python - 如何在 python 3.7 中安装 Urduhack?
- java - 如何在 Java 中暂停和恢复线程?
- chart.js - chart.js 和时间戳作为可读日期
- php - PHP函数从未分隔的编码值字符串创建图表
- python - 使用 argparser 将参数传递给入口点 python 脚本
- c# - 如何确定 EF Core 中是否拥有 ClrType?
- python - 为什么 pandas.core.series.Series 有时无法在 Python 中转换为火炬张量?
- java - 从 api 数组或矩阵 java android studio 中提取 json 数据
- c - 如何检查虚拟地址属于用户数据空间还是用户代码空间?