Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Sql server 仅安装PowerShell PackageProvider和模块(如果尚未安装)_Sql Server_Powershell_Octopus Deploy - Fatal编程技术网

Sql server 仅安装PowerShell PackageProvider和模块(如果尚未安装)

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

作为Octopus部署的一部分,我运行了以下Powershell脚本

但是,我只希望它们在尚未安装时安装

如果它们已安装,则最好仅在低于某个版本时安装

有人能告诉我们什么是最好的方法吗

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
作为参数或名称和版本(如果使用第二个参数)