Lorsqu'une barre oblique inverse fait partie d'une ligne de commande de légende, Site Recovery Manager double toutes les barres obliques inverses.

Problème

L'interprète du système de ligne de commande traite les doubles barres obliques inverses comme barres obliques inverses simples uniquement dans les chemins de fichiers. Si la commande de légende requiert une barre oblique inverse dans un paramètre autre qu'un chemin de fichier et que ladite commande ne convertit pas les doubles barres obliques inverses en une barre oblique inverse simple, la commande de légende concernée pouvez échouer avec une erreur.

Par exemple, vous pouvez ajouter une étape de légende au workflow et entrer le texte suivant comme commande :
c:\Windows\system32\cmd.exe /C "C:\myscript.cmd" a/b/c \d\e\f \\g\\h c:\myscript.log
Il résulte de l'étape de légende que Site Recovery Manager exécutera la commande ci-après :
c:\\Windows\\system32\\cmd.exe /C "C:\\myscript.cmd" a/b/c \\d\\e\\f \\\\g\\\\h c:\\myscript.log

Si myscript.cmd ne change pas la double barre oblique inverse en barre oblique inverse simple et que les paramètres \d\e\f et \\g\\h sont sensibles au nombre de barres obliques inverses, la commande myscript.cmd peut échouer.

Solution

  1. Créez un fichier de commandes supplémentaire pour la ligne de commande, afin d'y stocker les commandes et tous les paramètres requis. L'étape de légende exécute ce fichier de commandes supplémentaire sans argument. Pour cet exemple, la solution est la suivante :
    1. Dans un éditeur de texte comme le Bloc-notes, créez un fichier c:\SRM_callout.cmd ayant le contenu suivant : C:\myscript.cmd a/b/c \d\e\f \\g\\h c:\myscript.log
    2. Dans une étape de légende du plan de récupération, entrez la commande pour exécuter : c:\\Windows\\system32\\cmd.exe /C c:\SRM_callout.cmd
  2. Ajoutez un code au fichier de script d'origine qui remplace les doubles barres obliques inverses en barre oblique inverse simple.
    1. Ajoutez un code similaire à l'échantillon suivant, au début du fichier de script c:\myscript.cmd.
      @echo off
      set arg2=%2
      set arg3=%3
      set fixed_arg2=%arg2:\\=\%
      set fixed_arg3=%arg3:\\=\%
      
      Si vous utilisez la commande shift dans un script, tous les paramètres sensibles aux barres obliques inverses seront gérés de cette manière.
    2. Si vous n'utilisez pas de commande shift dans un script, effectuez les modifications suivantes :

      Remplacez %2 par %fixed_arg2%.

      Remplacez %3 par %fixed_arg3%.

    3. Ne changez pas la commande de l'étape de légende.