У меня есть скрипт 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
}
}