1
votes

Comment faire en sorte que PowerShell génère une variable avec des guillemets autour

Malgré la lecture de la documentation sur les guillemets simples et doubles en utilisant "about_quoting_rules", je n'arrive pas à obtenir le résultat que je recherche.

Une petite histoire:

J'ai un excellent doc et j'utilise PowerShell pour créer un foreach sur chaque entrée. Ceci, à son tour, est utilisé pour générer une commande robocopy pour lancer une tâche de synchronisation.

La partie de mon script qui est pertinente à ce sujet est ci-dessous:

$RoboArgs = `""I:\" + $FileSource`"" + " " + "Z:\" + $FileDestination + " " + $StandardSwitches + " " + $log


0 commentaires

3 Réponses :


1
votes

Essayez de délimiter votre chaîne avec des guillemets simples. Toutes les doubles qoutes à l'intérieur seront conservées dans la chaîne résultante.

Exemple:

$stringWithQuotes = "'" + (pwd) + "'"

Et vous pouvez également le faire dans l'autre sens si vous voulez des guillemets simples dans votre chaîne :

$stringWithQuotes = '"' + (pwd) + '"'


0 commentaires

1
votes

Je suggère d'utiliser PowerShell opérateur de formatage de chaîne , -f:

$RoboArgs = '"I:\{0}" "Z:\{1}" {2} {3} {4}' -f 
              $FileSource, $FileDestination, $StandardSwitches, $log
  • L'utilisation de '...' (guillemets simples) comme délimiteurs vous permet d'incorporer des instances " telles quelles.

    li>
  • {0} est un espace réservé pour le 1er opérande RHS, {1} pour le 2ème, et ainsi de suite.

    li >


0 commentaires

2
votes

Dans Powershell ` suivi de guillemets fonctionne, comme '\' dans d'autres langues:

Par exemple:

"toto"


0 commentaires