Устанавливайте PowerShell PackageProvider и Module только в том случае, если они еще не установлены. - PullRequest
0 голосов
/ 18 мая 2018

Я выполняю следующий скрипт Powershell в составе Octopus Deploy.

Однако я хочу, чтобы они устанавливались, только если они еще не установлены.

Если они установлены, желательно, чтобы они также устанавливались только в том случае, если они ниже определенной версии.

Может кто-нибудь посоветовать, что считается лучшим подходом для этого?

Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Confirm:$False -Force 

Install-Module -Name SqlServer -AllowClobber -Confirm:$False -Force  

1 Ответ

0 голосов
/ 18 мая 2018

Примерно так должно работать:

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
}
...