IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Script PowerShell pour déplacer des répertoires vers une nouvelle arborescence [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut Script PowerShell pour déplacer des répertoires vers une nouvelle arborescence
    Bonjour à tous,

    Nouvelle mission, nouveau défi :

    je dois faire un script PowerShell qui va copier des dossiers présents dans un listing csv (avec le chemin complet) vers un nouveau serveur mais avec une arborescence différente.

    Dans le csv j'ai en colonne A source et en colonne B destination. La colonne A et la Colonne b contienne les chemins complet. la conne B contient les chemins selon la nouvelle arborescence

    Copier les dossier par script je sais faire, mais là je bloque sur comment traiter le fichier csv pour qu'il me fasse le travail automatiquement. il y a 10 terra de données à copier, et mes connaissance en scripting sont vraiment très basique, je débute juste!
    D’où mon nouvel appel a l'aide à votre communauté.

    Merci par avance de votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    EZPZ
    Import-Csv

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Merci pour le lien, je l'ai lu et il m'a aidé, mais la ou je bloque dans mon script c'est pour copier les fichiers listés dans le csv vers la destination listée aussi dans le csv

    Merci pour ton aide.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Si il y a bien une colonne A et une B, ça donnerais un truc comme ça :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Import-Csv -Path "c:\monfichier.csv" | ForEach-Object {Copy-Item -Path $_.A -Destination $_.B}

    Ce n'est pas très compliqué, je pense qu'en cherchant un peux tu aurait au moins pu proposer un code comme ceci.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Merci pour cette commande, mais elle je n'arrive pas a la faire fonctionner, ni au boulot ni chez moi. je met le fichier csv comme exemple :

    source;destination
    C:\Users\neo3311\OneDrive\Documents\Ardia;G:\archives\
    C:\Users\neo3311\OneDrive\Documents\MobaXterm;G:\archives\test1\
    C:\Users\neo3311\OneDrive\Bureau\SMI_SM32x_J0323_100309;G:\archives\test1\test2


    Le pire c'est que je ne sais même pas si c'est faisable ce qu'on me demande. je penses que oui mais pas avec mon niveau de PowerShell, mais on ne peux installer des logiciels la sécurité du site l'interdit.. je me retrouve bloqué.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ta colonne A s'appelle donc source et ta colonne B s’appelle destination.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Import-Csv -Path "c:\monfichier.csv" | ForEach-Object {Copy-Item -Path $_.source -Destination $_.destination}

    Tes chemins ne semblent pas indiquer des fichier mais plutôt des dossiers ?!

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Ta colonne A s'appelle donc source et ta colonne B s’appelle destination.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Import-Csv -Path "c:\monfichier.csv" | ForEach-Object {Copy-Item -Path $_.source -Destination $_.destination}

    Tes chemins ne semblent pas indiquer des fichier mais plutôt des dossiers ?!
    Oui j'avais modifié $_.source et$_.destination, cela n'a pas fonctionné.
    ce sont des dossiers complet à copier avec tous les fichiers a l’intérieur. ce listing csv est pour l'exemple, le vrai listing contient plus de 2 million de lignes avec des répertoires et fichiers.

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Essaie comme ceci :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Import-Csv -Path ".\monfichier.csv" -Delimiter ";" -Encoding Default | ForEach-Object {
        if (Test-Path -Path $_.source -PathType Container)
        {
            if (!(Test-Path -Path $_.destination -PathType Container))
            {
                New-Item -Path ($_.destination) -ItemType "directory" | Out-Null
            }
     
            Copy-Item -Path ($_.source + "\*") -Destination $_.destination -Recurse
        }
    }

  9. #9
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ceci copie le contenu du dossier source dans le dossier destination.

    Il n'y a pas d'avertissement, si la source n'existe pas par exemple.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Essaie comme ceci :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Import-Csv -Path ".\monfichier.csv" -Delimiter ";" -Encoding Default | ForEach-Object {
        if (Test-Path -Path $_.source -PathType Container)
        {
            if (!(Test-Path -Path $_.destination -PathType Container))
            {
                New-Item -Path ($_.destination) -ItemType "directory" | Out-Null
            }
     
            Copy-Item -Path ($_.source + "\*") -Destination $_.destination -Recurse
        }
    }
    je n'ai plus de message d'erreur mais pas de copie sur mon deuxième disque G:
    En tout cas merci de m'aider.

  11. #11
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    J'ai fait un test ...

    Utilise Powershell ISE et fait du pas à pas (F11) après avoir mis un point d’arrêt (F9 -> ligne en rouge) à la première ligne.

    Tu va voir ce qui ne va pas.

  12. #12
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Et donne moi les trois premières ligne de ton fichier csv de test.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    En fait j'ai changé les chemins sources et là on dirait que ça copie.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Et donne moi les trois premières ligne de ton fichier csv de test.
    source destination
    F:\test TC G:\archives\
    F:\drivers G:\archives\test1\

  15. #15
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    A oui non mais la il n'y à plus de séparateur ;

  16. #16
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    A oui non mais la il n'y à plus de séparateur ;
    oups

    source;destination
    F:\test TC;G:\archives\
    F:\drivers;G:\archives\test1\
    F:\Cours Anne;G:\archives\test1\test2\

    en tout cas ça fonctionne impec.. je te remercie, je testerai ça demain au boulot avec le csv enorme lol.
    est ce qu'on peux faire une sorte de routine de vérification pour qu'il mette dans un log les fichiers qui ne sont pas copié?

  17. #17
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    ...les fichiers qui ne sont pas copié?
    Tu parle des dossiers sources inexistants ?

  18. #18
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Tu parle des dossiers sources inexistants ?
    Bonjour,

    Je voulais parler des erreur qui pouvaient survenir lors de la copie.
    je l'ai testé au boulot ça fonctionne bien, j'ai fait un fichier log de fin de copie comme ça :

    Copy-Item -Path ($_.source + "\*") -Destination $_.destination -Recurse -PassThru >>"$cheminsortie\ $fileName logfinal $fichier"

    les variables reprennent le non du fichier csv original puis la variable $filename met la date et l'heure.

    Maintenant j'essaye de comprendre comment mettre une barre de progression, en attendant j'ai mis -PassThru ce qu'i m'affiche la copie sur la console.

  19. #19
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ok.

    Si tu veux une barre de progression il faut un indice qui va s'incrémenter du début jusqu’à la fin.

    Soit tu considère que tu as 2000 lignes donc 2000 actions à réaliser et tu fait une barre de progression de 0 à 2000.
    Il faut comprendre qu'elle sera à titre indicatif car il peux y avoir des dossiers plus ou moins gros avec plus ou moins de fichiers et tout ceci ne prend pas en compte la taille des fichiers.

    Mais ça sera déjà pas mal

  20. #20
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 17
    Points
    17
    Par défaut
    ok j'ai déjà commencé a glaner des info la dessus sur internet, mais je ne sais pas a quel niveau dans le script je dois mettre les commandes.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Application pour transfert des SMS vers une boite Email
    Par itasoft dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 11/05/2018, 06h52
  2. Réponses: 12
    Dernier message: 13/04/2018, 11h15
  3. Macro pour envoyer des graphiques vers une feuille existante
    Par benjy777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2017, 23h19
  4. [SP-2010] Script Powershell pour récupérer des données
    Par jip31 dans le forum SharePoint
    Réponses: 1
    Dernier message: 28/04/2015, 14h21
  5. Importation des données vers une nouvelle BD
    Par Msysteme dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/12/2009, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo