Windows Server
Diese Anleitung geht von folgenden Speicherorten für Komponenten und Passwork aus:
- Passwork-Speicherort — C:\inetpub\wwroot\passwork
- PHP8.3-Speicherort — C:\Program Files\php8.3
- Passwork-Websitename im IIS-Webserver — Passwork Web Site
Vorbereitung
Öffnen Sie PowerShell als „Administrator":
Über das Startmenü-Kontextmenü
- Klicken Sie mit der rechten Maustaste auf das Start-Symbol in der unteren linken Ecke des Bildschirms.
- Wählen Sie „Windows PowerShell (Administrator)" aus dem Kontextmenü.
Über das Startmenü
- Klicken Sie mit der linken Maustaste auf das Start-Symbol in der unteren linken Ecke des Bildschirms.
- Geben Sie
powershellein - Öffnen Sie PowerShell als „Administrator" mit dem Shortcut —
Ctrl + Shift + Enter
Um den Passwork-Speicherort und den Websitenamen zu überprüfen, können Sie folgenden Code ausführen:
- PowerShell
# Import the module
Import-Module WebAdministration
# Get the list of all sites in IIS
$sites = Get-Website
# Output header
Write-Host "`n--- List of sites in IIS ---`n" -ForegroundColor Blue
foreach ($site in $sites) {
Write-Host "Site: " -NoNewline -ForegroundColor White
Write-Host $site.Name -ForegroundColor DarkGreen
# Get Bindings
Write-Host " Bindings:" -ForegroundColor DarkCyan
foreach ($binding in $site.Bindings.Collection) {
Write-Host " - Protocol: " -NoNewline -ForegroundColor Gray
Write-Host $binding.Protocol -ForegroundColor White
Write-Host " Address: " -NoNewline -ForegroundColor Gray
Write-Host $binding.BindingInformation -ForegroundColor White
}
# Get physical path
$physicalPath = (Get-WebConfigurationProperty -Filter "system.applicationHost/sites/site[@name='$($site.Name)']/application[@path='/']/virtualDirectory[@path='/']" -Name physicalPath).Value
Write-Host " Physical path: " -NoNewline -ForegroundColor DarkCyan
Write-Host $physicalPath -ForegroundColor White
Write-Host "------------------------------------" -ForegroundColor DarkGray
}
Bezug der aktuellen Version von Passwork
Erstellen Sie ein temporäres Verzeichnis zum Empfang von Passwork:
- PowerShell
New-Item -Path "$env:WinDir\Temp\update_passwork" -ItemType Directory
Wenn sich der Server mit Passwork in einem geschlossenen Netzwerk befindet, müssen Sie zum Passwork Customer Portal gehen, Version 7 manuell beziehen und auf den Server in folgendes Verzeichnis verschieben — C:\Windows\Temp\update_passwork\passwork.zip
Gehen Sie zum Passwork Customer Portal und kopieren Sie den API-Schlüssel, um die aktuelle Version zu beziehen:

Erstellen Sie die Variable API_KEY:
- PowerShell
$API_KEY = "your_api_key"
Überprüfen Sie die verfügbare Passwork-Version im Kundenportal mit dem kopierten API-Schlüssel über folgende Anfrage:
- PowerShell
Invoke-RestMethod -Uri "https://portal.passwork.pro/api/version?apikey=$API_KEY" -Method Get
Korrekte Ausgabe
- PowerShell
response
--------
@{last-available-version=07xxxx}
Stellen Sie sicher, dass Version 7 von Passwork zum Download verfügbar ist — 07xxxx
Laden Sie Version 7 von Passwork mit folgender Anfrage herunter:
- PowerShell
try {
(New-Object System.Net.WebClient).DownloadFile(
"https://portal.passwork.pro/api/download?apikey=$API_KEY",
"$env:WinDir\Temp\update_passwork\passwork.zip"
)
Write-Output "Passwork archive successfully obtained"
} catch {
Write-Output "Error obtaining Passwork: $_"
}
Löschen Sie die Variable API_KEY:
- PowerShell
Remove-Variable API_KEY
Aktualisierung auf die aktuelle Version
Lesen Sie die aktuelle Passwork-Version in eine Variable ein:
- PowerShell
$version = Get-Content "$env:SystemDrive\inetpub\wwwroot\passwork\version"
Kopieren Sie die Passwork-Konfigurationsdatei in ein separates Verzeichnis:
- PowerShell
Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\app\config\config.ini" -Destination "$env:SystemDrive\inetpub\wwwroot\"
Erstellen Sie ein Archiv der aktuellen Passwork-Version für eine mögliche Wiederherstellung:
- PowerShell
Compress-Archive -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork-$version.zip" -Force
Löschen Sie den gesamten Inhalt des Passwork-Verzeichnisses:
- PowerShell
Remove-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -Recurse -Force
Entpacken Sie Version 7 von Passwork an den physischen Speicherort:
- PowerShell
Expand-Archive -Path "$env:WinDir\Temp\update_passwork\passwork.zip" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"
Laden Sie die Rewrite-Regeln (web.config) herunter und platzieren Sie diese in der neuen Passwork-Version:
$env:SystemDrive\inetpub\wwwroot\passwork\public\web.config
Registrierung von PHP und Aktivierung der Erweiterungen
Importieren Sie IIS-Module und registrieren Sie die PHP-Version:
- PowerShell
Import-Module IISAdministration
Add-PsSnapin PHPManagerSnapin
New-PHPVersion -ScriptProcessor "$env:ProgramFiles\php8.3\php-cgi.exe" -SiteName "Passwork Web Site" -VirtualPath "/"
Aktivieren Sie PHP-Erweiterungen für die Passwork-Website:
- PowerShell
$extensions = @(
"php_curl.dll",
"php_gd.dll",
"php_gettext.dll",
"php_intl.dll",
"php_ldap.dll",
"php_mbstring.dll",
"php_mongodb.dll",
"php_mysqli.dll",
"php_openssl.dll",
"php_pdo_pgsql.dll",
"php_pdo_sqlite.dll",
"php_pgsql.dll",
"php_soap.dll",
"php_zip.dll",
"php_fileinfo.dll"
)
foreach ($extension in $extensions) {
Write-Host "PHP extension activated: $extension"
Set-PHPExtension -Name $extension -Status Enabled -SiteName "Passwork Web Site" -VirtualPath "/"
}
Aktivieren Sie zusätzliche PHP-Methoden für die Passwork-Website:
- PowerShell
$phpVersion=(Get-PHPConfiguration -SiteName "Passwork Web Site" -VirtualPath "/").Version
Set-WebConfigurationProperty -PSPath "IIS:\Sites\Passwork Web Site" -Filter "system.webServer/handlers/add[@name='php-$phpVersion']" -Name "verb" -Value "GET,HEAD,POST,PUT,DELETE,PATCH"
Löschen Sie das temporäre Verzeichnis mit dem Passwork-Version-7-Archiv:
- PowerShell
Remove-Item -Path "$env:WinDir\Temp\update_passwork" -Recurse -Force
Setzen Sie die Berechtigungen für den physischen Passwork-Speicherort:
- PowerShell
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IIS_IUSRS:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'Users:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IUSR:(OI)(CI)`M'"