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 :

Problème d'affichage des résultats [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2005
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2005
    Messages : 613
    Points : 220
    Points
    220
    Par défaut Problème d'affichage des résultats
    Bonjour à tous,

    J'ai un script qui me permet de scanner un dossier et d'afficher diverses informations sur les fichiers.
    Le problème est que je n'obtiens aucun affichage des données.
    Voici mon script :
    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
    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
    # Declaration des variables
    # Variable contenant le chemin à explorer
    $pathExplore = ""
     
    # Variable contenant le type de fichier à chercher
    $file = ""
     
    # Saisie des informations par l'utilisateur
    # Saisie du chemin à explorer
    $pathExplore = read-host "Veuillez saisir le chemin à explorer"
     
    # Saisie du typer de fichier à explorer
    $file = Read-Host "Veuillez saisir le type de fichier recherché"
     
    # Nous testons la variable file, si elle est vide nous recherchons tous les fichiers
    if($file -eq "") {
        $file = "*.*"
    }
    # Tableau de fichiers
    $FoldersList = @()
     
    Get-ChildItem -Path $pathExplore -Recurse -File -include $fichier -ErrorAction SilentlyContinue -Directory | ForEach-Object{
     
       # Pour chaque dossier de notre racine, on calcul la taille
       $Size = 0
       $Size = (Get-ChildItem $_.Fullname -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
     
       # Récupérer le nom complet du dossier (chemin)
       $FolderName = $_.fullname
     
       # Calculer la taille en Mb
       $FolderSize= [math]::Round($Size / 1Mb,2)
     
       $file = $_.Name
     
       # Ajouter un membre à notre objet global
       $FoldersSizeListObject = New-Object PSObject
       Add-Member -InputObject $FoldersSizeListObject -MemberType NoteProperty -Name "Dossier" -value $FolderName
       Add-Member -InputObject $FoldersSizeListObject -MemberType NoteProperty -Name "Fichier" -value $file
       Add-Member -InputObject $FoldersSizeListObject -MemberType NoteProperty -Name "Taille-Mb" -value $FolderSize
       $FoldersList += $FoldersSizeListObject
    }
     
    # Afficher le résultat dans un tableau
    $FoldersSizeList | Out-GridView -Title "Taille des dossiers sous $RootFolder"

    Merci beaucoup de votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, Intune)
    Inscrit en
    juillet 2014
    Messages
    2 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, Intune)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 843
    Points : 5 162
    Points
    5 162
    Par défaut
    Quelques remarques.

    $fichier est null


    Tu spécifie que tu ne veux que les fichiers -File et que les dossiers -Directory. Résultat tu n'as rien


    $FolderName = $_.fullname et $file = $_.Name FullName n'est pas forcément un dossier et Name n'est pas forcément un fichier


    # Ajouter un membre à notre objet global...Tu devrait directement ajouter un psobject ça sera plus simple et lisible
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $FoldersSizeListObject += [PSCustomObject]@{    
      Dossier = $FolderName
      Fichier = $file
      Taille-Mb = $FolderSize
    }

    Je regarderai plus en détail lorsque j'aurai un peu de temps.

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, Intune)
    Inscrit en
    juillet 2014
    Messages
    2 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, Intune)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 843
    Points : 5 162
    Points
    5 162
    Par défaut
    Voici un exemple fonctionnel.
    Après je n'ai pas bien compris ce que tu souhaites. Si tu ne t'en sort pas avec le code proposé il faudrait que tu précise les colonnes attendues et leurs contenus.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    $pathExplore = "C:\temp"
    $file = "*.*"
     
    # Tableau de résultat
    $result = @()
     
    #Pour chaque dossier de notre racine
    Get-ChildItem -Path $pathExplore -Directory -ErrorAction SilentlyContinue | ForEach-Object {
     
        # Récupère les fichiers
        $Files = Get-ChildItem "$($_.Fullname)\$file" -Recurse -File -ErrorAction SilentlyContinue
     
        # Calcul la taille
        $FolderSize = [int64](($Files | Measure-Object -Property Length -Sum).Sum)
     
        # Convertie la taille en Mb
        $FolderSize = [System.Math]::Round($FolderSize / 1Mb, 2)
     
        # Récupérer le nombre de fichiers
        $FilesCount = @($Files).Count
     
        # Récupérer le nom complet du dossier (chemin)
        $FolderFullName = $_.FullName
     
        # Ajouter un item à notre résultat
        $result += [PSCustomObject]@{    
            "Dossier" = $FolderFullName
            "Nombre-fichier" = $FilesCount
            "Taille-Mb" = $FolderSize
        }
    }
     
    # Affiche le résultat trié par taille décroissante dans un tableau
    $result | Sort-Object "Taille-Mb" -Descending | Out-GridView -Title "Taille des dossiers sous $pathExplore"

  4. #4
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2005
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2005
    Messages : 613
    Points : 220
    Points
    220
    Par défaut
    Bonjour,

    Merci beaucoup pour la réponse. Cela correspond aux résultats attendus.
    Je souhaite afficher la liste des fichiers et donc j'ai fait cela :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $result += [PSCustomObject]@{    
            "Dossier" = $FolderFullName
            "Nombre-fichier" = $FilesCount
            "Taille-Mb" = $FolderSize
            "Fichiers" = $files
        }
    Effectivement $files contient tous les fichiers.
    Mais je ne vois pas trop comment afficher les fichiers ligne par ligne, je cherche à faire une boucle imbriquée mais cela ne fonctionne pas.
    Merci beaucoup

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, Intune)
    Inscrit en
    juillet 2014
    Messages
    2 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, Intune)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 843
    Points : 5 162
    Points
    5 162
    Par défaut
    Pourrais tu fournir un exemple du résultat attendu ?

  6. #6
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2005
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2005
    Messages : 613
    Points : 220
    Points
    220
    Par défaut
    L'utilisateur saisie :
    - Un chemin qu'il veut explorer (le dossier)
    - Un type de fichier (*.exe, *.txt, *.*, ...)

    le résultat attendu :
    | nom du dossier | Nom du fichier | Taille Mb | Nb de fichiers dans le dossier

    Merci bien

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, Intune)
    Inscrit en
    juillet 2014
    Messages
    2 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, Intune)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 843
    Points : 5 162
    Points
    5 162
    Par défaut
    Avec 3 fichiers de 1 Mo dans le dossier toto ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nom du dossier | Nom du fichier | Taille Mb | Nb de fichiers dans le dossier
    c:\toto | 1.txt | 1 |3
    c:\toto | 2.txt | 1 |3
    c:\toto | 3.txt | 1 |3
    C'est cela ?

  8. #8
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2005
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2005
    Messages : 613
    Points : 220
    Points
    220
    Par défaut
    Oui c'est cela.
    Merci beaucoup.

  9. #9
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, Intune)
    Inscrit en
    juillet 2014
    Messages
    2 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, Intune)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 843
    Points : 5 162
    Points
    5 162
    Par défaut
    Voila tu as les dossiers à la racine de "c:\temp" ...

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $pathExplore = "C:\temp"
    $file = "*.*"
     
    # Tableau de résultat
    $result = @()
     
    #Pour chaque dossier de notre racine
    Get-ChildItem -Path $pathExplore -Directory -ErrorAction SilentlyContinue | ForEach-Object {
     
        $Files = Get-ChildItem "$($_.Fullname)\$file" -Recurse -File -ErrorAction SilentlyContinue
     
        # Récupérer le nombre de fichiers
        $FilesCount = @($Files).Count
     
        # Récupérer le nom complet du dossier (chemin)
        $FolderFullName = $_.FullName
     
        $Files | ForEach-Object {
            # Taille en Mb
            $Size = [System.Math]::Round($_.Length / 1Mb, 2)
     
            # Ajouter un item à notre résultat
            $result += [PSCustomObject]@{    
                "Dossier" = $FolderFullName
                "Nombre-fichier" = $_.Name
                "Taille-Mb" = $Size
                "Nb de fichiers dans le dossier" = $FilesCount
            }
        }
    }
     
    # Affiche le résultat trié par taille décroissante dans un tableau
    $result | Out-GridView -Title "Taille des dossiers sous $pathExplore"

  10. #10
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, AirWatch, Intune)
    Inscrit en
    juillet 2014
    Messages
    2 843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, AirWatch, Intune)
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 843
    Points : 5 162
    Points
    5 162
    Par défaut
    Ou ça, pareille je n'ai pas le niveau de détail suffisant pour savoir

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $pathExplore = "C:\temp"
    $file = "*.*"
     
    # Tableau de résultat
    $result = @()
     
    #Pour chaque dossier de notre racine
    Get-ChildItem -Path $pathExplore -Recurse -Directory -ErrorAction SilentlyContinue | ForEach-Object {
     
        $Files = Get-ChildItem "$($_.Fullname)\$file" -File -ErrorAction SilentlyContinue
     
        # Récupérer le nombre de fichiers
        $FilesCount = @($Files).Count
     
        # Récupérer le nom complet du dossier (chemin)
        $FolderFullName = $_.FullName
     
        $Files | ForEach-Object {
            # Taille en Mb
            $Size = [System.Math]::Round($_.Length / 1Mb, 2)
     
            # Ajouter un item à notre résultat
            $result += [PSCustomObject]@{    
                "Dossier" = $FolderFullName
                "Nombre-fichier" = $_.Name
                "Taille-Mb" = $Size
                "Nb de fichiers dans le dossier" = $FilesCount
            }
        }
    }
     
    # Affiche le résultat trié par taille décroissante dans un tableau
    $result | Out-GridView -Title "Taille des dossiers sous $pathExplore"

  11. #11
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2005
    Messages
    613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2005
    Messages : 613
    Points : 220
    Points
    220
    Par défaut
    Merci beaucoup cela correspond à mes attentes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème d'affichage des résultats sur un graphe
    Par kerdouj dans le forum Scilab
    Réponses: 0
    Dernier message: 22/06/2020, 13h16
  2. [AC-2010] Problème pour affichage des résultats de requêteS dans un même tableau
    Par Didou95 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/02/2016, 09h06
  3. Problème d'affichage des résultat SQL
    Par student.isims dans le forum Général Java
    Réponses: 1
    Dernier message: 27/10/2014, 12h24
  4. Problème d'affichage des résultats sous SQL server
    Par DevKast dans le forum ADO.NET
    Réponses: 5
    Dernier message: 10/02/2014, 15h39
  5. [MySQL] Problème d'affichage des résultats d'une requête dans tableau
    Par Foune1 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/12/2012, 11h28

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