Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-为什么从Gallery下载此模块会在服务器上失败?_Powershell - Fatal编程技术网

Powershell-为什么从Gallery下载此模块会在服务器上失败?

Powershell-为什么从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

服务器操作系统: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.

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错误。