Questo articolo spiega come configurare istanze isolate di PowerShell Universal sulla stessa macchina. È utile per testare versioni diverse, provare configurazioni server differenti o isolare le risorse tra ambienti. Usiamo questa tecnica in modo esteso nei nostri ambienti di test e sviluppo.
Installazione
Il primo passo è preparare una cartella per ospitare l’app PowerShell Universal e i file di configurazione. Scarichi poi lo ZIP di PowerShell Universal e lo collochi in una directory App. Può usare lo script seguente per recuperare l’ultima build della versione 4 ed estrarla in una directory locale. Crei uno script update.ps1 nella propria directory e lo esegua.
$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
Se vuole usare la versione 5, sostituisca la porzione v4-version.txt dell’URL della versione con v5-version.txt. Può anche indicare la versione in modo fisso se desidera una build specifica. Nell’URL del blob dello ZIP potrebbe aver notato la porzione win7-x64. È la piattaforma per cui lo ZIP è stato creato. Può cambiarla in linux-x64 o osx-x64 se esegue su un’altra piattaforma. Visiti il centro download per vedere come sono formattati questi URL se il blob non è disponibile.
La documentazione di installazione ZIP copre anche l’estrazione, lo sblocco dei file e l’avvio di Universal.Server.exe.
Configurazione
Crei poi un run.ps1 nella propria directory per impostare la configurazione dell’istanza. Le impostazioni usano percorsi relativi per il repository, il database e i file di log. Di seguito usiamo variabili d’ambiente per impostare la configurazione in base al file appsettings.json nella cartella App. Qualsiasi variabile d’ambiente sovrascrive le impostazioni in appsettings.json. Vedere impostazioni dell’app per l’elenco completo.
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"
Questo script imposta la configurazione dell’istanza. Può eseguirlo con una porta specifica per avviare l’istanza. Duplichi lo script in un’altra directory e cambi la porta per eseguire più istanze. Ogni istanza ha la propria configurazione e i propri dati. Non è possibile condividere le porte tra istanze, a meno che non si usi IIS.
Pronto a iniziare a creare? Scarichi PowerShell Universal.

Adam Driscoll