Vorher/Nachher: Variablenwerte werden an Leerzeichen gepsplittet (auch wenn in Anführungszeichen)

German Support for Syncovery on Windows
Post Reply
byzantine
Posts: 3
Joined: Tue Feb 21, 2023 6:56 am

Vorher/Nachher: Variablenwerte werden an Leerzeichen gepsplittet (auch wenn in Anführungszeichen)

Post by byzantine »

Hallo zusammen,

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"
Erwartetes Verhalten: Da ich die Variablen in Anführungszeichen setze, sollte der komplette Wert (auch bei mehreren Wörtern, z.B. bei $MSG = "OK: 1240 files synced") als ein einzelnes Kommandozeilen-Argument beim aufgerufenen Programm ankommen.

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
using SFFS since 2014 :)
tobias
Posts: 2246
Joined: Tue Mar 31, 2020 7:37 pm

Re: Vorher/Nachher: Variablenwerte werden an Leerzeichen gepsplittet (auch wenn in Anführungszeichen)

Post by tobias »

Hi,
also bei $MSG und $PROFILE muss man die Quotes weglassen, weil Syncovery die selbst ergänzt. Und dann sind da doppelte Quotes, und die annulieren sich. Ich werde es in einer zukünftigen Version verbessern, damit man da nicht so aufpassen muss.
Post Reply