Powershell-为什么从Gallery下载此模块会在服务器上失败?
服务器操作系统:Windows Server 2016数据中心,构建14393Powershell-为什么从Gallery下载此模块会在服务器上失败?,powershell,Powershell,服务器操作系统:Windows Server 2016数据中心,构建14393 Powershell版本:5.1 我可以运行下面的代码在我的笔记本电脑上安装一个模块,但几天前在服务器上下载时开始失败(它在CI/CD管道中工作了几周) 在服务器上,我得到下面的警告和错误 WARNING: Source Location 'https://www.powershellgallery.com/api/v2/package/AzureDevOpsHelpers/1.1.12' is not valid
Powershell版本:5.1 我可以运行下面的代码在我的笔记本电脑上安装一个模块,但几天前在服务器上下载时开始失败(它在CI/CD管道中工作了几周) 在服务器上,我得到下面的警告和错误
WARNING: Source Location 'https://www.powershellgallery.com/api/v2/package/AzureDevOpsHelpers/1.1.12' is not valid.
PackageManagement\Install-Package : Package 'AzureDevOpsHelpers' failed to download.
但是,在同一台服务器上,我可以使用上面假定无效的URL通过浏览器手动下载包
我在Powershell.org上找到了这个讨论,但我认为这个模块不是很大:
我希望能够使用安装包来安装该软件包。除了希望重新开始工作之外,我还能做些什么吗?以下是一个你可以尝试的方法:
$path = "$($env:PSModulePath.Split(';')[0])\AzureDevOpsHelpers"
if(!(Test-Path $path)){
New-Item -Path $path -ItemType Directory | Out-Null
}
$file = "$path\package.zip"
Invoke-WebRequest 'https://www.powershellgallery.com/api/v2/package/AzureDevOpsHelpers/1.1.12' -OutFile $file -TimeoutSec 0
Expand-Archive -Path $file -DestinationPath $path -Force
Import-Module AzureDevOpsHelpers
结果:
PS C:\WINDOWS\system32> W:\Code\Scripts\Powershell\ps1\PowerShell - Course\Solutions\StackTest3.ps1
PS C:\WINDOWS\system32> Get-Module -ListAvailable
Directory: $env:PSModulePath\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.1.12 AzureDevOpsHelpers {RemoveOldCerts, _uninstallService, UpdateXmlConfigAppConnectionStringInitialCatalog, ConfigureSslForPortOnHost...}
以下是一个你可以尝试的方法:
$path = "$($env:PSModulePath.Split(';')[0])\AzureDevOpsHelpers"
if(!(Test-Path $path)){
New-Item -Path $path -ItemType Directory | Out-Null
}
$file = "$path\package.zip"
Invoke-WebRequest 'https://www.powershellgallery.com/api/v2/package/AzureDevOpsHelpers/1.1.12' -OutFile $file -TimeoutSec 0
Expand-Archive -Path $file -DestinationPath $path -Force
Import-Module AzureDevOpsHelpers
结果:
PS C:\WINDOWS\system32> W:\Code\Scripts\Powershell\ps1\PowerShell - Course\Solutions\StackTest3.ps1
PS C:\WINDOWS\system32> Get-Module -ListAvailable
Directory: $env:PSModulePath\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.1.12 AzureDevOpsHelpers {RemoveOldCerts, _uninstallService, UpdateXmlConfigAppConnectionStringInitialCatalog, ConfigureSslForPortOnHost...}
如果我在Install Module命令之前的会话中运行此命令,则一切正常
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
如果我在Install Module命令之前的会话中运行此命令,则一切正常
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
我试过,
调用WebRequest$yourlink-Outfile.\package.nupkg
然后安装package.\package.nupkg
,结果成功了。问题是您需要知道版本链接。我将添加一个您可以执行的示例作为答案。我尝试了,调用WebRequest$yourlink-Outfile.\package.nupkg
然后安装package.\package.nupkg
,结果成功了。问题是你需要知道版本链接。我将添加一个你可以做的事情的示例作为答案。这是一个有趣的解决方法,但我找到了根本原因,用不同的方法解决更简单(请参见我的答案)。这是一个有趣的解决方法,但我找到了根本原因,用不同的方法解决更简单(见我的答案)。哦,这是一个非常常见的问题,我没有想到它,因为没有抛出ssl错误。哦,这是一个非常常见的问题,我没有想到它,因为没有抛出ssl错误。