我正在尝试创建一个函数,该函数将根据需要从存储库 PSGallery 自动安装、更新和导入 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
但我收到以下确认提示:
-Force
我可以通过使用这样的参数来解决这个问题:
Install-PackageProvider -Name "NuGet" -Confirm:$false -Force -Verbose
但是我在该解决方案中看到的问题(可能不是什么大问题)是-Force
即使安装的版本是最新的,每次使用都会再次下载并安装 NuGet。如果没有-Force
参数,如果版本是最新的,它将跳过它,我更愿意这样做。
有没有办法将包源“ https://oneget.org/nuget-2.8.5.208.package.swidtag ”设置为受信任的,这样我就不会再次得到确认提示而无需使用-Force
参数?