Зависимый от сессии модуль установки / обновления - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть скрипт powershell, который устанавливает / обновляет некоторые модули. Если вы запускаете скрипт в первый раз, необходимые модули устанавливаются и каждый раз обновляются. Во время каждого обновления я получаю следующее предупреждение:

WARNING: The version '2.2.16' of module 'VSSetup' is currently in use. Retry the operation after closing the

приложения.

Есть ли какое-то управление, которое мне нужно изучить, чтобы избавиться от этой проблемы при выполнении сценария? Этот скрипт будет выполняться на регулярной основе внутри контейнера и не уверен, как управлять сессией внутри скрипта. Некоторый справочный пример был бы полезен. Вот код:

function Install-Update-Modules
{
[CmdletBinding()]
[OutputType([Boolean])]
Param([parameter(Mandatory)]$ModuleList)

begin { $i = 0}

process 
{
    #get the list of modules to be installed as a pre-requisite
    $modules = Get-Content -Path $ModuleList

    foreach($module in $modules)
    {
        $i = $i+1

        #check if the module is already installed or not
        $installed = Get-InstalledModule -name $module -AllVersions

        if($installed -eq $null)
        {                
            Write-Progress -Activity "Installing $($module) ...." -Status "Progress: " -PercentComplete ($i/$modules.Count*100)

            if(!(Find-Module -Name $module | Install-Module -Force -AllowClobber -Scope AllUsers))
            {
                Write-Host "Failed Installing Module $($module)" -ForegroundColor Red

                $false
            }
        }
        else
        {                
            Write-Progress -Activity "Updating $($module) ...." -Status "Progress: " -PercentComplete ($i/$modules.Count*100)

            Update-Module -Name $module -Scope AllUsers -Force
        }     
    }

    $true        
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...