MAIN MENU
Le blogue Devolutions

Annonces, mises à jour et analyses de Devolutions

Devolutions PowerShell Universal instances on the same machine illustration for the blog.

Configurer des instances PowerShell Universal portables côte à côte sur la même machine

Parcourez une structure ZIP portable pour PowerShell Universal : téléchargez une version dans un dossier App, puis démarrez des instances isolées avec run.ps1, des chemins relatifs pour le dépôt et la base de données, et des ports Kestrel distincts.

Cet article explique comment configurer des instances isolées de PowerShell Universal sur la même machine. C’est utile pour tester différentes versions, essayer différentes configurations de serveur, ou isoler des ressources entre environnements. Nous recourons souvent à cette technique dans nos environnements de test et de développement.

Installation

La première étape consiste à préparer un dossier pour héberger l’application PowerShell Universal et ses fichiers de configuration. Ensuite, téléchargez le ZIP de PowerShell Universal et placez-le dans un répertoire App. Vous pouvez utiliser le script suivant pour récupérer la dernière version 4 et l’extraire dans un dossier local. Créez un script update.ps1 dans votre répertoire et exécutez-le.

$Version = (Invoke-WebRequest https://imsreleases.blob.core.windows.net/universal/production/v4-version.txt).Content

Write-Verbose "Downloading $Version..."

$Temp = [System.IO.Path]::GetTempPath()
$Zip = (Join-Path $Temp "Universal.$Version.zip")

if (Test-Path $Zip) {
    Remove-Item $Zip -Force
}

Invoke-WebRequest "https://imsreleases.blob.core.windows.net/universal/production/$version/Universal.win7-x64.$Version.zip" -OutFile $Zip
$AppPath = Join-Path $PSScriptRoot "App"
if (Test-Path $AppPath) {
    Remove-Item $AppPath -Recurse -Force
}

Expand-Archive -Path $Zip -DestinationPath $AppPath
Get-ChildItem $AppPath -Recurse | Unblock-File

Si vous voulez utiliser la version 5, remplacez la portion v4-version.txt de l’URL de version par v5-version.txt. Vous pouvez aussi coder la version en dur si vous voulez une build précise. Dans l’URL du blob pour le ZIP, vous avez peut-être remarqué la portion win7-x64. C’est la plateforme pour laquelle le ZIP est compilé. Vous pouvez la changer pour linux-x64 ou osx-x64 si vous exécutez sur une autre plateforme. Consultez le centre de téléchargement pour voir le format de ces URL si le blob n’est pas disponible.

La documentation d’installation ZIP couvre aussi l’extraction, le déblocage des fichiers et le démarrage de Universal.Server.exe.

Configuration

Ensuite, créez un run.ps1 dans votre répertoire pour configurer l’instance. Les paramètres utilisent des chemins relatifs pour le dépôt, la base de données et les fichiers journaux. Ci-dessous, nous utilisons des variables d’environnement pour définir la configuration à partir du fichier appsettings.json du dossier App. Toute variable d’environnement remplace les paramètres de appsettings.json. Voir les paramètres de l’appli pour la liste complète.

param($Port = 5000)

$ENV:Data__RepositoryPath = "$PSScriptRoot\Repository"
$ENV:Data__ConnectionString = "Data Source=$PSScriptRoot\Database.db"
$ENV:Kestrel__Endpoints__HTTP__Url = "http://localhost:$Port"
$ENV:Plugins__0 = "SQLite"
$ENV:SystemLogPath = "$PSScriptRoot\Logs\SysLog.txt"

& "$PSScriptRoot\App\Universal.Server.exe"

Ce script définit la configuration de votre instance. Vous pouvez l’exécuter avec un port précis pour démarrer l’instance. Dupliquez le script dans un autre répertoire et changez le port pour exécuter plusieurs instances. Chaque instance a sa propre configuration et ses propres données. Vous ne pouvez pas partager de ports entre instances, sauf si vous utilisez IIS.

Prêt à construire? Téléchargez PowerShell Universal.