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 :

Afficher les fichiers d'une couleur et les dossiers d'une autre après un ChildItem


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Afficher les fichiers d'une couleur et les dossiers d'une autre après un ChildItem
    Bonjour à tous,

    Je me tourne vers vous car après plusieurs essais je n'arrive toujours pas à faire ce que je veux !!!

    J'essaye de faire un script qui indique met en couleurs les fichiers et les dossier après un ChilItem.

    J'ai fait ça après beaucoup de rechercher mais cela ne fonctionne pas, j'ai essayé un GetType-Data, et plusieurs choses trouvé sur le forum microsoft mais pas moyen je n'y arrive pas !

    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
    param(
    [Parameter(Mandatory = $true)]
    $param1)
     
     
        Invoke-Expression ('Get-ChildItem "$param1"') 
     
        foreach ($item in Get-ChildItem)  {
     
            if ($item.GetType().FullName -eq 'Directory') 
            {
                $item -ForegroundColor = 'Magenta'
                echo $_
            }
            elseif ($item.GetType().FullName -eq 'File') 
            {
                $item -ForegroundColor = 'green'
                echo $item
            }
        }

    Si quelqu'un pourrait m'expliquer comment faire.

    Je débute, jusque la je pensais me débrouiller mais la je bloque!

    Merci pour votre attention.

  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
    Comme ceci peut être

    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
    function Color-Me 
    {
        param(
            [parameter(Mandatory= $true, ValueFromPipeline = $true)]
            $pipelineInput
        )
     
        process
        {
            foreach ($Item in $pipelineInput)  
            { 
                if ($Item.PSIsContainer)
                {
                    Write-Host $Item.FullName -ForegroundColor "Magenta"
                }
                else
                {
                    Write-Host $Item.FullName -ForegroundColor "green"
                }
            }
        }
    }
     
    Get-ChildItem | Color-Me

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    une autre approche avec un filtre et un tableau de deux couleurs :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #requiert ps v4.0 je crois (cf. PSItem)
    filter Write-HostWithColor {
       param( $MyForegroundColor=@("Magenta","Green") )
     
      Write-Host $PSItem.FullName -ForegroundColor $MyForegroundColor[$($PSItem.PSIsContainer)]
    }
     
    Get-ChildItem | Write-HostWithColor
    Je ne sais plus si on peut gérer la couleur dans un fichier de formatage.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Je ne sais plus si on peut gérer la couleur dans un fichier de formatage.
    Voir ceci

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci à vous !

    Donc si je comprends bien, il faut d'abord faire une fonction qui fait ce que l'on veut et seulement après "invoquer l'expression" et la fonction créer après un pipeline, c'est bien ça ?

    Encore merci, j'essaye de décortiquer vos réponses

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Miss Jenny Voir le message

    Donc si je comprends bien, il faut d'abord faire une fonction qui fait ce que l'on veut et seulement après "invoquer l'expression" et la fonction créer après un pipeline, c'est bien ça ?
    Pas sûr de tout comprendre dans ta phrase.
    Ici Get-ChildItem et (Write-HostWithColor ou Color-Me) sont vus comme des cmdlets.
    Dans l'exemple Get-ChildItem émet des données dans le pipeline et (Write-HostWithColor ou Color-Me) les reçoit et les affiche d'une certaine couleur déterminée par un critère.

    Le pipeline est une autre manière de boucler sur une collection d'objet :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $MyForegroundColor=@("Magenta","Green")
    foreach ($File in Get-ChildItem)
    {
      Write-Host $File.FullName -ForegroundColor $MyForegroundColor[$($File.PSIsContainer)]
    }

    Pour l'usage du mot clé Filter, il remplace ceci :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        param(
            [parameter(Mandatory= $true, ValueFromPipeline = $true)] #indique qu'on lit les objet depuis le pipeline
            $pipelineInput
        )
     
        process # itère sur les objets reçus du pipeline
        {
    On fait la même chose avec moins de code, mais cela ne vaut que pour ton exemple. Dans d'autre cas la première forme est préférable.
    Mais comme tu débutes ce n'est peut être pas le plus important ici.

    Tu devrais déjà comprendre où sont les erreurs dans ton code d'origine.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    foreach ($item in Get-ChildItem)  {  $item.GetType().FullName }
    Ton test d'égalité sur une chaine échoue à chaque itération.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     foreach ($item in Get-ChildItem)  {  $item -ForegroundColor = 'Magenta' }
    $item est un objet, ici ta ligne appel un cmdlet, puis tente une affectation impossible dans ce contexte.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     foreach ($item in Get-ChildItem)  {  $echo $_}
    Echo est un alias de cmdlet pas une variable.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     foreach ($item in Get-ChildItem)  {  echo $_}
    La variable automatique $_ est renseignée dans un segment de pipeline, mais pas ici.

    Tu mélanges tout , reprend les bases de Powershell, ainsi tu ne coderas pas des trucs qui tombent en marche

Discussions similaires

  1. [Débutant] Afficher les dossiers et fichiers cachés
    Par davidc dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/02/2014, 20h12
  2. Un modèle pour afficher les dossiers/fichiers
    Par rakba dans le forum Composants
    Réponses: 0
    Dernier message: 18/12/2011, 01h02
  3. Impossible d'afficher les dossiers et les fichiers cachés
    Par bucabuca dans le forum Windows XP
    Réponses: 4
    Dernier message: 27/03/2008, 09h23
  4. Réponses: 2
    Dernier message: 24/01/2008, 18h24
  5. Récuperer les fichiers d'une autre machine sur une autre
    Par khalidlyon dans le forum Réseau
    Réponses: 1
    Dernier message: 09/11/2004, 13h40

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