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 :

Recherche dossier spécifique [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut Recherche dossier spécifique
    Bonjour tout le monde,

    J'aimerai faire un petit script qui me remontrai dans un fichier excel la date de modification du dossier "Mes Documents" peut importe le chemin. Je m'explique, imaginons sur un serveur avec plusieurs disques plusieurs dossiers utilisateurs...
    Exemple : user1
    C:\...\...\Mes Documents

    user2
    D:\...\...\Mes Documents

    etc...

    Auriez-vous une idée ? N'étant pas développeur, j'avoue ne pas savoir comment m'y prendre...

    Merci d'avance !

  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 : 39
    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,

    Ben déjà, pourquoi le Mes Documents serais sur le disque D ?????

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    En fait, on a un script avec un xcopy qui sauvegarde le dossier "Mes documents" des utilisateurs sur les serveurs dans les disques réseaux perso des users donc le script me servirai à voir la date à laquelle les users ont fait leur sauvegarde.

    Du coup sur le serveur vu qu'on a plusieurs disques les dossiers des users sont répartis sur plusieurs disques. Sur un même serveur on peut donc avoir des dossiers sur D: E: G: ...

    Je sais pas si je suis très clair... :-/

  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 : 39
    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 avec l'explication

    Ben finalement c'est assez simple avec Powershell, tu récupère la liste de tout les drives qui existent sur la machine et tu regarde si le dossier que tu veux checker existe.
    Si c'est le cas tu le parcours pour extraire les dates de dernière modifications.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Hello !

    Bon, je pars de loin donc j'essaie d'y aller étape par étape. Avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem "E:\Utilisateurs" -name "Mes Documents" -recurse
    J'arrive à avoir ce que je veux dans l’interpréteur de commandes mais dès que j'essaie de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem "E:\Utilisateurs" -name "Mes Documents" -recurse | Export-Csv
    Il me rempli le CSV comme ça :
    #TYPE System.String
    Length
    23
    23
    37
    23
    23

    Donc j'fais mal un truc ça c'est sûr, mais j'arrive pas à comprendre le pourquoi...

    Vous pouvez m'indiquer ?
    Merci !

  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 : 39
    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
    C'est bien tu essaye c'est déjà pas mal
    Alors plutôt comme ceci :
    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
    15
    Get-ChildItem -Path "E:\Utilisateurs" -Name "Mes Documents" -Recurse | %{
    	$Item = $_
    	$Type = $_.Extension
    	$Path = $_.FullName
    	$Folder = $_.PSIsContainer
    	$Age = $_.CreationTime
    	$Modified = $_.LastWriteTime
     
    	$Path | Select-Object `
    		@{n="Name";e={$Item}},`
    		@{n="Created";e={$Age}},`
    		@{n="Modified";e={$Modified}},`
    		@{n="filePath";e={$Path}},`
    		@{n="Extension";e={if($Folder){"Folder"}else{$Type}}}`
    } | Export-Csv Results.csv -NoTypeInformation

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Ca à l'air tout simple pour toi, dis comme ça, mais du coup, je comprends plus du tout qui fait quoi ici ?

    Est-ce que c'est une solution ou une indiquation ? Parce que chez moi, le csv créé est vide

  8. #8
    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 : 39
    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
    C'est une solution.
    Si Get-ChildItem -Path "E:\Utilisateurs" -Name "Mes Documents" -Recurse tout seul renvoi bien quelque chose ça doit fonctionner.
    Le reste n'est que de la récupération de champs et de la mise en forme pour le CSV.

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    La commande Get-ChildItem fonctionne bien comme on peut le voir là : http://hpics.li/a7ad54b

    Et pourtant le csv reste vide... Un module à importer ? Il me semble pas...

  10. #10
    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 : 39
    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
    Hum curieux....
    Peux tu m'indiquer en gros l’arborescence du dossier E:\Utilisateurs

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    En gros l'arborescence donne ça :

    E:\Utilisateurs\DossierUtilisateur1
    E:\Utilisateurs\DossierUtilisateur2
    E:\Utilisateurs\DossierUtilisateur3
    E:\Utilisateurs\DossierUtilisateur4
    Etc...

    J'exécute le script en tant qu'administrateur sur le serveur si jamais donc j'ai les droits partout...

  12. #12
    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 : 39
    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 !
    C'est le -Name qui pose soucis (c'est vrai que je ne l'utilise jamais et que j'ai testé je m'en suis passé )

    Donc ceci est ok
    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
    15
    Get-ChildItem -Path ".\Utilisateurs" -Filter "*Mes Documents*" -Recurse | %{
    	$Item = $_
    	$Type = $_.Extension
    	$Path = $_.FullName
    	$Folder = $_.PSIsContainer
    	$Age = $_.CreationTime
    	$Modified = $_.LastWriteTime
     
    	$Path | Select-Object `
    		@{n="Name";e={$Item}},`
    		@{n="Created";e={$Age}},`
    		@{n="Modified";e={$Modified}},`
    		@{n="filePath";e={$Path}},`
    		@{n="Extension";e={if($Folder){"Folder"}else{$Type}}}
    } | Export-Csv Results.csv -NoTypeInformation

  13. #13
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Super ça fonctionne au poil ! Si je peux abuser, un moyen de rechercher ça sur tous les disques ?

  14. #14
    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 : 39
    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
    Pour la liste des drives Get-PSDrive avec le paramètre -PSProvider FileSystem
    Tu refais un foreach sur le resultat %{}

    Si tu me décris comment sont structuré tes disques avec l'arborescence qui contient les autres dossier Users je te ferais un truc

  15. #15
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Merci ! Je cherche un peu et si j'arrive pas d'ici demain midi, je reviens vers toi.

    Merci en tout cas !

  16. #16
    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 : 39
    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 pas de soucis
    Penses à quand tu est satisfait des réponses ça encourage

  17. #17
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    J'ai essayé plusieurs choses dont

    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
    $drive = Get-PSDrive -PSProvider FileSystem
    
    foreach ($lecteur in $drive) %{
        Get-ChildItem -Path "$lecteur:\Utilisateurs" -Filter "*Mes Documents*" -Recurse | %{
        	$Item = $_
        	$Type = $_.Extension
        	$Path = $_.FullName
        	$Folder = $_.PSIsContainer
        	$Age = $_.CreationTime
        	$Modified = $_.LastWriteTime
    
    	   $Path | Select-Object `
    		@{n="Name";e={$Item}},`
    		@{n="Created";e={$Age}},`
    		@{n="Modified";e={$Modified}},`
    		@{n="filePath";e={$Path}},`
    		@{n="Extension";e={if($Folder){"Folder"}else{$Type}}}
    
    } | Export-Csv Results.csv -NoTypeInformation -Delimiter ';'
    }

    Mais il me remonte ces erreurs :

    Corps d'instruction manquant dans la boucle foreach.
    At line:3 char:30

    Instruction manquante après «*=*» dans le littéral de hachage.
    At line:13 char:23

    Instruction manquante après «*=*» dans le littéral de hachage.
    At line:14 char:25

    Instruction manquante après «*=*» dans le littéral de hachage.
    At line:15 char:31

    Instruction manquante après «*=*» dans le littéral de hachage.
    At line:16 char:27

    Instruction manquante après «*=*» dans le littéral de hachage.
    At line:17 char:55
    Je trouve pas sur le net d'explications sur le fait d'utiliser " %{ " avec ForEach, à quoi sert % ?

  18. #18
    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 : 39
    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
    Petit cours sur le foreach en Powershell

    Soit tu utilise foreach($truc in $trucs) { $truc }
    Soit tu tu fait (principalement pour les inliners) $trucs | %{ $_ } ou dans ce cas $_ est l'élément courant
    %{} est un alias de foreach plus rapide à écrire et surtout qui permet de passer par le pipe
    Qu'on pourrait aussi faire comme ceci : $trucs | foreach { $_ }

    Il faut donc que tu corrige ton code.

  19. #19
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Hummmm si j'enlève le % il ne met plus ces erreurs mais il dit que le chemin existe pas sur certains lecteurs. (ce qui est vrai !)

    Il faut donc que je fasse un check de l'existence du chemin avant !

  20. #20
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    J'ai pas mal réfléchi sur mon check de dossier et j'arrive pas à faire ce que veux... En gros j'ai fait la commande toute simple qui me remonte les disques du serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $drive = Get-PSDrive -PSProvider FileSystem
    C'est après que j'arrive pas : j'aimerais faire un Test-Path de $drive\Utilisateurs mais je n'arrive pas à ce qu'il prenne en compte ça comme un chemin

    J'ai fait ça, mais je sais pas si c'est logique et faisable...

    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
    $drive = Get-PSDrive -PSProvider FileSystem | %{
    
    if(Test-Path $_\Utilisateurs)
    {
    
        Get-ChildItem -Path "E:\Utilisateurs" -Filter "Mes Documents" -Recurse | %{
        	$Item = $_
        	$Type = $_.Extension
        	$Path = $_.FullName
        	$Folder = $_.PSIsContainer
        	$Age = $_.CreationTime
        	$Modified = $_.LastWriteTime
    
    	   $Path | Select-Object `
    		@{n="Name";e={$Item}},`
    		@{n="Created";e={$Age}},`
    		@{n="Modified";e={$Modified}},`
    		@{n="filePath";e={$Path}},`
    		@{n="Extension";e={if($Folder){"Folder"}else{$Type}}}
    }
    }
    }  | Export-Csv Results.csv -NoTypeInformation -Delimiter ';'

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/02/2016, 12h41
  2. Comment ouvrir l'explorateur sur un dossier spécifique
    Par SimpleMe dans le forum Windows XP
    Réponses: 4
    Dernier message: 15/09/2007, 09h52
  3. avoir accés à un dossier spécifique en C
    Par Rniamo dans le forum C
    Réponses: 5
    Dernier message: 18/07/2007, 16h54
  4. [Bonne pratique] Tag de fichiers et dossiers spécifiques ?
    Par Beldom dans le forum Subversion
    Réponses: 5
    Dernier message: 11/07/2007, 10h13
  5. [FLASH] [Son] Recherche son spécifique
    Par cedonline dans le forum Flash
    Réponses: 1
    Dernier message: 09/11/2005, 18h45

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