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. #21
    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
    Salut !

    Ca me parait pas mal au premier abord
    Mais déjà premiere ligne premier souci
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $drive = Get-PSDrive -PSProvider FileSystem | %{
    Ici soit tu met dans la variable $drive, soit tu passe au pipe !
    Donc il faut corriger en :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-PSDrive -PSProvider FileSystem | %{

  2. #22
    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
    Ah ok ! Je pensais qu'il fallait quand même déclarer la variable avant.

    Merci !

  3. #23
    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
    Ensuite j'anticipe un peu ta prochaine réponse qui va être : ça marche toujours pas
    Il faut utiliser une des propriétés de l'objet que retourne le Get-PSDrive :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Get-PSDrive -PSProvider FileSystem | %{
     
    if(Test-Path "$($_.Root)Utilisateurs")
    {
    ......

  4. #24
    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
    Damn ! Faut vraiment que je prenne des cours de Powershell, ou que l'école en fasse plus ! Parce que là ça va pas...

    Merci pour tout en tous cas !

  5. #25
    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
    Ca fonctionne du coup ?
    Tu en est ou ?

  6. #26
    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
    Du coup, maintenant ça écrit dans le fichier Excel (chose que ça ne faisait plus avant ton aide ! )

    J'ai fait les modifs que tu m'as donné, mais ça ne fait que le lecteur E:\ et pas les autres...

  7. #27
    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
    Relis bien ton code surtout après le Get-ChildItem

  8. #28
    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
    Oh mon dieu !! Mais quel débile !!!

  9. #29
    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
    Clairement j'essaie trop de choses que je ne maîtrise pas...
    J'ai trouvé sur un forum une fonction qui permettrai de limiter la récursivité (parce qu'idéalement le chemin des dossiers serait "Lecteur:\Utilisateurs\User\Mes Documents" et pas besoin d'aller plus bas) mais elle n'a pas l'air de fonctionner sur mon script.

    Mais même sans cette fonction, le csv n'est rempli que du lecteur E:\

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    # =============================== Fonction Recursivité ===================================
    
    Function Get-ChildItemToDepth
    {
      Param(
        [String]$Path = $PWD,
        [String]$Filter = "*",
        [Byte]$ToDepth = 255,
        [Byte]$CurrentDepth = 0,
        [Switch]$DebugMode
      )
    
       $CurrentDepth++
      If ($DebugMode) { $DebugPreference = "Continue" }
    
      Get-ChildItem $Path | Foreach-Object  `
      {
        $_ | Where-Object { $_.Name -Like $Filter }
    
        If ($_.PsIsContainer)
        {
          If ($CurrentDepth -le $ToDepth)
          {
            # Rappel de cette fonction
            Get-ChildItemToDepth -Path $_.FullName -Filter $Filter `
              -ToDepth $ToDepth -CurrentDepth $CurrentDepth
          }
          Else
          {
            Write-Debug $("Exclusion du dossier: $($_.FullName) " + `
              "(Explication: Profondeur courante : $CurrentDepth - Limite: $ToDepth)")
          }
        }
      }
    }
    
    # =============================== Script ===================================
    
    Get-PSDrive -PSProvider FileSystem | %{
    
    if(Test-Path "$($_.Root)Utilisateurs")
    {
    
        Get-ChildItemToDepth -Path "$($_.Root)Utilisateurs" -Filter "Mes Documents" -ToDepth 2 | %{
        	$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 ';'

  10. #30
    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
    Bon alors déjà Get-Childitem possède déjà un paramètre -Depth :
    https://msdn.microsoft.com/en-us/pow...k_getchilditem

    Après le code que je vois me parait tout à fait correcte.
    Mais je n'ais pas ton arborescence sous les yeux.
    Car le seul problème que je verrais c'est que sur les autres lecteurs le dossier x:\Utilisateurs n'est pas présent...

    Fait déjà des test avec la première partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Get-PSDrive -PSProvider FileSystem | %{
      if(Test-Path "$($_.Root)Utilisateurs") {
        Write-Host "$($_.Root)Utilisateurs existe bien"
      }
    }
    Si tu obtiens bien pour plusieurs lecteurs le message déjà on sera que ça c'est ok

  11. #31
    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 !

    J'ai fait l'idiot ! Il y a un dossier utilisateurs sur un autre disque mais pas de dossier mes documents, c'est pour ça que je le voyais pas...
    Vu que je suis en Powershell 2.0 et qu'on peut pas trop migrer, j'ai garder la fonction -Depth et mon script donne ça :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    # ------------------------------------------ Fonction recursivité ---------------------------------
    
    Function Get-ChildItemToDepth
    {
      Param(
        [String]$Path = $PWD,
        [String]$Filter = "*",
        [Byte]$ToDepth = 255,
        [Byte]$CurrentDepth = 0,
        [Switch]$DebugMode
      )
    
       $CurrentDepth++
      If ($DebugMode) { $DebugPreference = "Continue" }
    
      Get-ChildItem $Path | Foreach-Object  `
      {
        $_ | Where-Object { $_.Name -Like $Filter }
    
        If ($_.PsIsContainer)
        {
          If ($CurrentDepth -le $ToDepth)
          {
            # Rappel de cette fonction
            Get-ChildItemToDepth -Path $_.FullName -Filter $Filter `
              -ToDepth $ToDepth -CurrentDepth $CurrentDepth
          }
          Else
          {
            Write-Debug $("Exclusion du dossier: $($_.FullName) " + `
              "(Explication: Profondeur courante : $CurrentDepth - Limite: $ToDepth)")
          }
        }
      }
    }
    
    #============================= Script ========================================
    
    Get-PSDrive -PSProvider FileSystem | %{
    
    if(Test-Path "$($_.Root)Utilisateurs")
    {
    
        Get-ChildItemToDepth -Path "$($_.Root)Utilisateurs" -Filter "Mes Documents" -ToDepth 1 | %{
        	$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 Tests.csv -NoTypeInformation -Delimiter ';'
    C'est parfait pour moi !
    Merci pour ton aide et ta patience !

  12. #32
    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
    Ah ben cool !
    Tu peux donc passer ton topic en résolu via le bouton qui va bien

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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