我试图创建一个功能,将自动安装,更新和导入按需从存储库PSGallery PowerShell模块,这将在生成服务器上运行,所以我必须避免任何形式的确认提示。这个函数经常被调用,如果模块已经加载到会话中(仅在第一次),将不会尝试安装或更新模块。PowerShell软件包源确认
# Already imported? Let's not go further with updates and import again...
if (Get-Module -Name $moduleName)
{
Write-Host "'$moduleName' is already imported to the current session!"
return
}
如果模块尚未安装,我会尝试安装它。问题是当我到达必须安装NuGet PackageManagement提供程序的步骤时(在导入从PSGallery安装模块所需的PowerShellGet模块之前)。我做了以下cmdlet:
Install-PackageProvider -Name "NuGet" -Confirm:$false -Verbose
但我得到以下确认提示:
Install-PackageProvider -Name "NuGet" -Confirm:$false -Force -Verbose
:
我可以通过使用-Force
参数一样,解决这个问题但是我用这个解决方案看到的问题(可能不是什么大问题)是使用-Force
将下载并安装一个即使安装的版本是最新的,每次都获得NuGet。如果没有-Force
参数,它只会跳过它,如果版本是最新的,我宁愿这样做。
有没有办法将软件包源'https://oneget.org/nuget-2.8.5.208.package.swidtag'设置为可信,所以我不再使用-Force
参数来获得确认提示?
Powershell 3以上有一个'Unblock-File' cmdlet。也许这可能有帮助? https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/unblock-file?view=powershell-6 –