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 :

Comment copier l'ensemble des PST trouvés vers un dossier ?


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Par défaut Comment copier l'ensemble des PST trouvés vers un dossier ?
    Bonjour,

    A partir de cette commande, j'aimerais copier tous les fichiers PST trouvés dans un dossier spécifique :

    $PST = Get-ChildItem -Recurse -Path "C:\Users\toto.toto" -Name "*.pst"
    Copy-Item $PST \\serveur\toto.toto\PST -Recurse

    Avez-vous un exemple pour un débutant PowerShell ?

    Cdt,
    Elminio

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    Eu comment dire.....
    Le code que tu as mis fais ce que tu demande.....

    Quel est ton souci ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Par défaut
    Bonjour cerede2000,

    C'est vendredi je retourne me coucher, j'avais oublié de couper Outlook.

    Merci.

    Cdt,
    Elminio

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Tu as des circonstances atténuantes, c'est le 1er Avril on va dire que c'était un poisson pour nous tester

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Par défaut
    En fait j'ai quand même un soucis avec ce code :

    $PST = Get-ChildItem -Recurse -Path "C:\Users\toto.toto" -Name "*.pst"
    Copy-Item C:\Users\toto.toto\$PST \\serveur\toto.toto\PST -Recurse

    En résultat j'aurais ceci : C:\Users\toto.toto\Desktop\test1.pst Documents\test2.pst

    Et j'aurais voulu ceci C:\Users\toto.toto\Desktop\test1.pst C:\Users\toto.toto\Documents\test2.pst

    :-(

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Heu.....
    Je comprends pas bien.

    Les chemins que tu mets dans la partie script n'ont rien a voir avec ce que tu attends....
    Script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Users\toto.toto
    \\serveur\toto.toto\PST
    Et tu attends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Users\toto.toto\Desktop\test1.pst
    C:\Users\toto.toto\Documents\test2.pst
    Il y a quelque chose qui m'échappe surement......

  7. #7
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Tu peux essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Copy-Item -path C:\Users\toto.toto -destination \\serveur\toto.toto\PST -recurse -Filter *.PST -Force
    Ca va potentiellement quand même créer des répertoires vide, mais ça ne devrait copier que les PST.

  8. #8
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Par défaut
    Citation Envoyé par cerede2000 Voir le message
    Heu.....
    Je comprends pas bien.

    Les chemins que tu mets dans la partie script n'ont rien a voir avec ce que tu attends....
    Script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Users\toto.toto
    \\serveur\toto.toto\PST
    Et tu attends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Users\toto.toto\Desktop\test1.pst
    C:\Users\toto.toto\Documents\test2.pst
    Il y a quelque chose qui m'échappe surement......
    Voici le script qui me pose problème :

    Je lui demande de faire une recherche de tous les PST dans un profil utilisateur Windows et de copier les fichiers trouvés dans un dossier

    $username = gc env:username
    $userprofile = gc env:userprofile
    $destinationprofil = "\\serveur\$username"
    $PST = Get-ChildItem -Recurse -Path $userprofile -Name "*.pst"
    Copy-Item $userprofile\$PST $destinationprofil\PST -Recurse

  9. #9
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ok je comprends mieux ton problème !
    Avec les fichiers cachés, systèmes et autres avec le GCI pfffff.
    Je te propose ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $username = gc env:username
    $PST = Get-WmiObject -Class CIM_DataFile -Filter "Drive='C:' And Extension='pst'" |  ?{ $_.name -Match $username } | Select Name
    $PST | Copy-Item $destinationprofil\PST

  10. #10
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Par défaut
    Résultat du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Name                                                           
    ----                                                           
    c:\users\username\appdata\local\microsoft\outlook\test.pst
    c:\users\username\desktop\test3.pst                       
    c:\users\username\documents\test2.pst                     
    Copy-Item : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas 
    l'entrée de pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent 
    l'entrée de pipeline.
    Au caractère Ligne:5 : 8
    + $PST | Copy-Item $destinationprofil\PST
    +        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (Desktop\test3.pst:PSObject) [Copy-Item], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.CopyItemCommand
     
    Copy-Item : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas 
    l'entrée de pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent 
    l'entrée de pipeline.
    Au caractère Ligne:5 : 8
    + $PST | Copy-Item $destinationprofil\PST
    +        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (Documents\test2.pst:PSObject) [Copy-Item], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.CopyItemCommand

  11. #11
    Membre habitué Avatar de Kfrero
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Par défaut
    Citation Envoyé par elminio75 Voir le message
    Résultat du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Name                                                           
    ----                                                           
    c:\users\username\appdata\local\microsoft\outlook\test.pst
    c:\users\username\desktop\test3.pst                       
    c:\users\username\documents\test2.pst                     
    Copy-Item : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas 
    l'entrée de pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent 
    l'entrée de pipeline.
    Au caractère Ligne:5 : 8
    + $PST | Copy-Item $destinationprofil\PST
    +        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (Desktop\test3.pst:PSObject) [Copy-Item], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.CopyItemCommand
     
    Copy-Item : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas 
    l'entrée de pipeline, soit parce que l'entrée et ses propriétés ne correspondent à aucun des paramètres qui acceptent 
    l'entrée de pipeline.
    Au caractère Ligne:5 : 8
    + $PST | Copy-Item $destinationprofil\PST
    +        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (Documents\test2.pst:PSObject) [Copy-Item], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.CopyItemCommand
    Peux-tu essayer en précisant -Destination
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\TEST2.txt" | Copy-Item -Destination "$destinationprofil\PST\"

  12. #12
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 218
    Par défaut
    Bonjour, n'ayant pas bien comprit si tu souhaitais garder l'arborescence des dossiers source j'ai donc pensez que oui. Sinon il faudra se poser la question des fichiers possédant le même nom.


    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $source = "C:\aa"
    $destination = "C:\bb"
    $filter = "*.txt"
     
    Get-ChildItem -Recurse -Path $source -Filter $filter | ForEach-Object {
        $destiFile = Join-Path $destination -ChildPath $_.FullName.Substring($source.Length)
        $destiFolder = [System.IO.Path]::GetDirectoryName($destiFile)
        if (-not(Test-Path $destiFolder))
        {
            New-Item $destiFolder -type directory
        }
        Write-Host $_.FullName -> $destiFile
        Copy-Item  $_.FullName -Destination $destiFile
    }

    Sortie
    C:\aa\Nouveau document texte.txt -> C:\bb\Nouveau document texte.txt
    C:\aa\test\zazaa.txt -> C:\bb\test\zazaa.txt
    C:\aa\test2\Nouveau dossier\Nouveau dossier\essds.txt -> C:\bb\test2\Nouveau dossier\Nouveau dossier\essds.txt

Discussions similaires

  1. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  2. Comment copier une image d'un Axes vers un autre Axes
    Par miss_angel dans le forum Images
    Réponses: 1
    Dernier message: 14/02/2008, 12h56
  3. [1.1] Comment lister l'ensemble des instance d'objets en cours ?
    Par maitrebn dans le forum Framework .NET
    Réponses: 2
    Dernier message: 25/09/2006, 13h48
  4. Réponses: 4
    Dernier message: 11/09/2006, 17h58
  5. Réponses: 5
    Dernier message: 04/07/2006, 11h29

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