Synthaxe de Robocopy avec usage de variables

This topic contains 3 replies, has 3 voices, and was last updated by  Luc ROLLAND 5 months ago.

  • Author
    Posts
  • #67158

    Luc ROLLAND
    Participant

    Bonjour,
    Sur un serveur 2012R2 Std 64 bits je veux automatiser avec PowerShell une copie de fichiers.
    Je créé un script copie.ps1 contenant :

    $Source  = "L:\Hyper-V\Disques virtuels"
    $Copie   = "Z:\Hyper-V\Disques virtuels"
    $Fic = "HD1_FICHIERS.vhdx"
    $VM_Nom = "FICHIERS"
    $Options = "/COPYALL /E /V /R:8 /W:15 /XA:SH"
    $FicLog  = "$env:HOMEPATH\Documents\RBC_Fichiers.log"
    RoboCopy $Source $Copie $Fic $Options
    

    Et j'obtiens le message d'erreur :

    -------------------------------------------------------------------------------
       ROBOCOPY   ::   Copie de fichiers robuste pour Windows     
    -------------------------------------------------------------------------------
      Début : vendredi 24 mars 2017 09:54:35
      Source - L:\Hyper-V\Disques virtuels\
      Dest - Z:\Hyper-V\Disques virtuels\
      Fichiers : HD1_FICHIER.vhdx
         
      Options : /DCOPY:DA /COPY:DAT /R:1000000 /W:30 
    -------------------------------------------------------------------------------
    ERREUR : paramètre non valide #4 : "/COPYALL /E /V /R:8 /W:15 /XA:SH"
    

    Or si je tape la commande sans utiliser les variables (ce que je veux obtenir) :

    RoboCopy L:\Hyper-V\"Disques virtuels" Z:\Hyper-V\"Disques virtuels" HD1_FICHIER.vhdx /COPYALL /E /V /R:8 /W:15 /XA:SH
    

    La copie s'effectue sans erreur !
    Je n'arrive pas à comprendre la raison de cet échec avec les variables, j'ai tenté plusieurs variantes de syntaxe ...
    Pourrait-on m'expliquer mon erreur ?
    Cordialement.

    Luc

  • #67170

    Sam Boutros
    Participant

    $Options is treated as a single option. To have it treated as several options, use an array as in:

    $Source  = "L:\Hyper-V\Disques virtuels"
    $Copie   = "Z:\Hyper-V\Disques virtuels"
    $Fic = "HD1_FICHIERS.vhdx"
    $VM_Nom = "FICHIERS"
    $Options = @('/COPYALL','/E','/V','/R:8','/W:15','/XA:SH')
    $FicLog  = "$env:HOMEPATH\Documents\RBC_Fichiers.log"
    RoboCopy $Source $Copie $Fic $Options
    
  • #67173

    fpoli
    Participant

    hi,
    switching to English 🙂
    You need to play the parameters in a specific way to make it works.
    Try this out:

    [string]$Robocopy = "Robocopy.exe"
     $FicLog = "$env:HOMEPATH\Documents\RBC_Fichiers.log"
     $RobocopyParams = @("/COPYALL","/E","/V","/R:8","/W:15","/XA:SH",("/LOG+:" +  $FicLog))
     $paths =  @("L:\Hyper-V\Disques virtuels", "Z:\Hyper-V\Disques virtuels","HD1_FICHIERS.vhdx")
    
     $parameters = $paths + $RobocopyParams
      
     &$robocopy $parameters
    

    ciao
    fra

  • #67179

    Luc ROLLAND
    Participant

    Oups ! Sorry for French speaking.
    Ok your answers works fine.
    Many thanks.
    Bests regards

You must be logged in to reply to this topic.