Synthaxe de Robocopy avec usage de variables

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

  • Author
    Posts
  • #67158
    Profile photo of Luc ROLLAND
    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
    Profile photo of Sam Boutros
    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
    Profile photo of fpoli
    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
    Profile photo of Luc ROLLAND
    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.