MAIN MENU
Devolutions Blog

Ankündigungen, Aktualisierungen und Einsichten von Devolutions

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

Portable PowerShell Universal-Instanzen nebeneinander auf demselben Computer einrichten

Dieser Beitrag zeigt ein portables ZIP-Layout für PowerShell Universal: einen versionierten Build in einen App-Ordner laden und isolierte Instanzen mit run.ps1, relativen Repository- und Datenbankpfaden sowie eigenen Kestrel-Ports starten.

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.