Dieser Beitrag zeigt, wie Sie isolierte PowerShell Universal-Instanzen auf demselben Computer einrichten. Das ist nützlich, um verschiedene Versionen zu testen, andere Serverkonfigurationen auszuprobieren oder Ressourcen über Umgebungen hinweg zu isolieren. Wir nutzen diese Technik umfangreich in unseren Test- und Entwicklungsumgebungen.
Installation
Der erste Schritt besteht darin, einen Ordner für die PowerShell Universal-App und die Konfigurationsdateien einzurichten. Laden Sie anschließend das PowerShell Universal-ZIP herunter und legen Sie es in einem App-Verzeichnis ab. Mit dem folgenden Skript können Sie den aktuellen Version-4-Build abrufen und in ein lokales Verzeichnis entpacken. Erstellen Sie ein update.ps1-Skript in Ihrem Verzeichnis und führen Sie es aus.
$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
Wenn Sie Version 5 verwenden möchten, ändern Sie den Teil v4-version.txt der Versions-URL in v5-version.txt. Sie können die Version auch fest eintragen, wenn Sie einen bestimmten Build wollen. In der Blob-URL für das ZIP ist der Teil win7-x64 zu sehen. Das ist die Plattform, für die das ZIP erstellt wurde. Sie können dies in linux-x64 oder osx-x64 ändern, wenn Sie auf einer anderen Plattform arbeiten. Besuchen Sie das Download-Center, um das URL-Format zu sehen, falls der Blob nicht verfügbar ist.
Die Dokumentation zur ZIP-Installation beschreibt auch das Entpacken, das Aufheben der Dateisperre und das Starten von Universal.Server.exe.
Konfiguration
Erstellen Sie als Nächstes ein run.ps1 in Ihrem Verzeichnis, um die Konfiguration Ihrer Instanz festzulegen. Die Einstellungen nutzen relative Pfade für Repository, Datenbank und Protokolldateien. Unten setzen wir die Konfiguration über Umgebungsvariablen auf Basis der appsettings.json im App-Ordner. Umgebungsvariablen überschreiben die Einstellungen in appsettings.json. Die vollständige Liste finden Sie unter App-Einstellungen.
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"
Dieses Skript setzt die Konfiguration Ihrer Instanz. Sie können es mit einem bestimmten Port ausführen, um die Instanz zu starten. Duplizieren Sie das Skript in ein anderes Verzeichnis und ändern Sie den Port, um mehrere Instanzen zu betreiben. Jede Instanz hat ihre eigene Konfiguration und Daten. Ports können zwischen Instanzen nicht geteilt werden, außer Sie verwenden IIS.
Bereit zum Bauen? PowerShell Universal herunterladen.

Adam Driscoll