MAIN MENU
Blog di Devolutions

Annunci, aggiornamenti e approfondimenti di Devolutions.

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

Configurare istanze portatili di PowerShell Universal affiancate sulla stessa macchina

Questa guida illustra un layout ZIP portatile per PowerShell Universal: scarichi una build versionata in una cartella App, poi avvii istanze isolate con run.ps1, percorsi relativi di repository e database e porte Kestrel distinte.

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.