virgole e graffe

Dopo uno snervante pomeriggio di prove e letture di blog e documenti tecnici ho appurato che, su Windows Server 2008 64 bit, la funzione Command() di VB6 priva di virgole e parentesi graffe l'argomento passato da un eseguibile ad un altro tramite la funzione CreateProcess.

Facendo le prove con PowerShell mi sono accorto del difetto, mentre se eseguo un batch contenente la stessa shell non ho problemi. E anche usando il Prompt dei Comandi (cmd.exe) ho potuto riscontrare che si comporta in modo differente da PowerShell.

Dopo aver provato a cambiare l'esecuzione di default, ho scoperto che non è possibile utilizzare il Prompt come default a partire da Windows Server 2008 64 bit e che per risolvere sarebbe possibile creare uno script PowerShell e lanciarlo con l'opzione -EncodedCommand.

In particolare su questo articolo del Microsoft TechNet:

[...]


Overview: Powershell interprets command line arguments to a script different if the script is executed from within an existing Powershell instance or executed from inside a CMD window calling powershell.exe.
Background/Discovery: Discovered this while debugging a deployment issue with a NANT script calling powershell and one of the param's converted from comma-separated to space-separated.


[...]

Quindi alla fine, costretto comunque a modificare i due eseguibili, ho deciso di usare un file INI con alcuni parametri fissi ed un file con gli argomenti variabili.

Commenti

Post popolari in questo blog

Polisportive

Leicester City Footbal Club

Pagellone partita di calci8