Sql server 仅安装PowerShell PackageProvider和模块(如果尚未安装)
作为Octopus部署的一部分,我运行了以下Powershell脚本 但是,我只希望它们在尚未安装时安装 如果它们已安装,则最好仅在低于某个版本时安装 有人能告诉我们什么是最好的方法吗Sql server 仅安装PowerShell PackageProvider和模块(如果尚未安装),sql-server,powershell,octopus-deploy,Sql Server,Powershell,Octopus Deploy,作为Octopus部署的一部分,我运行了以下Powershell脚本 但是,我只希望它们在尚未安装时安装 如果它们已安装,则最好仅在低于某个版本时安装 有人能告诉我们什么是最好的方法吗 Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Confirm:$False -Force Install-Module -Name SqlServer -AllowClobber -Confirm:$False -Force
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Confirm:$False -Force
Install-Module -Name SqlServer -AllowClobber -Confirm:$False -Force
像这样的方法应该会奏效:
if (Get-Module -ListAvailable -Name SqlServer) {
Write-Host "SQL Already Installed"
}
else {
try {
Install-Module -Name SqlServer -AllowClobber -Confirm:$False -Force
}
catch [Exception] {
$_.message
exit
}
}
if ((Get-PackageProvider -Name NuGet).version -lt 2.8.5.201 ) {
try {
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Confirm:$False -Force
}
catch [Exception]{
$_.message
exit
}
}
else {
Write-Host "Version of NuGet installed = " (Get-PackageProvider -Name NuGet).version
}
你到底尝试了什么?我尝试了几种不同的方法,但没有找到一个干净的解决方案。在检查PackageProvider的情况下,我希望可以使用$p=(get-PackageProvider-name nuget)执行get。我认为只有当它不存在时才应该安装它。但是,我不相信您可以指定一个版本。我认为这可能会解决您的问题。可以将其转换为函数调用吗?不明白为什么不可以,您只需要将其包装在
函数调用中,并将$name
作为参数或名称和版本(如果使用第二个参数)