Je peux exprimer mon besoin avec le scénario suivant: Écrire une fonction qui accepte une chaîne à exécuter en tant que commande native.
Ce n'est pas trop tiré par les cheveux d'une idée: si vous vous connectez à d'autres utilitaires de ligne de commande ailleurs dans l'entreprise qui vous fournissent une commande pour exécuter mot pour mot. Comme vous ne contrôlez pas la commande, vous devez accepter toute commande valide en entrée . Ce sont les principaux hoquets que j'ai été incapable de surmonter facilement:
La commande peut exécuter un programme vivant dans un chemin contenant un espace:
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
La commande peut avoir des paramètres avec des espaces:
$command = 'echo "hello world!"';
La commande peut avoir des ticks simples et doubles:
$command = "echo `"it`'s`"";
Y a-t-il un moyen propre d'accomplir cela? Je n'ai pu concevoir que des solutions de contournement somptueuses et laides, mais pour un langage de script, je pense que cela devrait être simple.