ich nutze das Feld "Ausführen nachher" (Execute program after job), um nach jedem Profil-Lauf ein externes PowerShell-Script mit den Syncovery-Variablen $PROFILE, $RESULT und $MSG aufzurufen, z.B.:
Code: Select all
pwsh.exe -NoProfile -File "C:\Scripts\MyScript.ps1" -ProfileName "$PROFILE" -Result "$RESULT" -Message "$MSG"Tatsächliches Verhalten: Beim Zielprogramm kommt trotz der Anführungszeichen nur das erste Wort des jeweiligen Variablenwerts an. Alle weiteren Wörter gehen verloren bzw. werden fälschlich als zusätzliche, unzugeordnete Argumente übergeben. Das tritt sowohl bei $MSG als auch bei $PROFILE auf, sobald der jeweilige Wert Leerzeichen enthält.
Vermutete Ursache: Es scheint, als würde Syncovery die Kommandozeile beim Zusammenbauen (nach der Variablen-Substitution) selbst anhand von Leerzeichen in einzelne Argumente aufteilen, ohne dabei die vom Nutzer gesetzten Anführungszeichen als Gruppierung zu berücksichtigen. Dadurch werden mehrwortige Variablenwerte unbeabsichtigt zerschnitten.
Workaround: die Message-Variable als letztes Argument übergeben, damit das aufgerufene Script über eine "restliche Argumente"-Sammelfunktion (z.B. PowerShells ValueFromRemainingArguments) alle abgeschnittenen Wortfragmente wieder zusammensetzen kann. Sauber ist das aber nicht – für andere Anwendungsfälle (z.B. wenn mehrere mehrwortige Variablen gleichzeitig benötigt werden) funktioniert dieser Trick nicht mehr.
Erwünschtes Verhalten / Feature-Request: Anführungszeichen um Variablen im "Execute before/after"-Feld sollten korrekt respektiert werden, sodass mehrwortige Variablenwerte als ein einzelnes Argument beim aufgerufenen Programm ankommen – wie man es von einer normalen Windows-Kommandozeile erwarten würde.
Syncovery-Version: 10.13.8 (64 bit)
Betriebssystem: Windows 11
Danke und viele Grüße