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 :

Fonction Utilisateur lisant un pipeline d'objets [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    En retraite
    Inscrit en
    Septembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 31
    Par défaut Fonction Utilisateur lisant un pipeline d'objets
    Bonjour

    Je tente de développer une fonction que je voudrais "Piper", mais je n'arrive pas à déclarer le paramètre d'entrée.
    En fait la fonction doit fournir une interface équivalente à "Format-Table".
    Voici une des nombreuses versions que j'ai essayée. (PSObject, String, ...)
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function Print-Table {
        param ([Parameter(ValueFromPipeline=$True)]
            [System.Management.Automation.PSObject[]] $Lines
            )
    $Lines | Format-table | Out-File -FilePath $FileOut -append
     
    }

    Tout se passe comme si la fonction recevait uniquement la dernière ligne de l'entrée
    Merci

  2. #2
    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
    Voici 2 exemple un premier explicite et un deuxième implicite avec quelques affichage de débug pour comprendre.

    Tu doit étudier Begin, Process, End
    https://www.sapien.com/blog/2019/05/...rocess-to-end/
    https://docs.microsoft.com/fr-fr/pow...s-to-functions

    Et comprendre le fonctionnement de ValueFromPipeline
    https://docs.microsoft.com/fr-fr/pow...pipeline-input
    L’entrée de pipeline fournit un seul élément à la fois, de la même façon que les éléments sont traités dans une boucle foreach. Au minimum, un bloc process est requis pour traiter chacun de ces éléments si vous acceptez un tableau en entrée. Si vous acceptez une seule valeur en entrée, un bloc process n’est pas nécessaire, mais je vous conseille quand même de le spécifier par souci de cohérence.

    Si tu ne spécifie pas de bloc dans un pipeline le code est considéré comme un bloc End

    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
    function Print-Table {
        param ([Parameter(ValueFromPipeline=$True)]
            [System.Management.Automation.PSObject[]]$Lines
            )
     
        Begin {
            Write-Host " - Begin"
            $obj = @()
        }
     
        Process {
            Write-Host " - Process : $Lines"
            $obj += $Lines
     
        }
     
        End {
            Write-Host " - End"
            $obj | Format-Table
        }
     
    }
     
    function Print-Table2 {
        Begin {
            Write-Host " - Begin"
            $obj = @()
        }
     
        Process {
            Write-Host " - Process : $_"
            $obj += $_
     
        }
     
        End {
            Write-Host " - End"
            $obj | Format-Table
        }
     
    }
     
    Clear-Host
    (Get-ChildItem -LiteralPath $env:SystemRoot).Name | Select-Object -First 5 | Print-Table

  3. #3
    Membre averti
    Homme Profil pro
    En retraite
    Inscrit en
    Septembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 31
    Par défaut Merci Eric
    Bonsoir Eric
    MERCI je te remercie pour ces points d'entrée. J'étais sur la voie (Je commençais à comprendre Begin, Process, End)
    Ce qui est sûr, c'est que sans toi je me préparais à quelques longues soirées ..

    Encore une fois MERCI beaucoup

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

Discussions similaires

  1. fonction utilisateur non reconue par sql server 2000
    Par ouedmouss dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/09/2005, 07h46
  2. Fonction utilisateurs et programme externe
    Par syl2095 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 29/08/2005, 15h30
  3. Fonction utilisateur qui renvoie la date du jour
    Par falcon dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/12/2004, 11h03
  4. Retour NULL d'une fonction utilisateur
    Par tiboleo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/11/2004, 15h40
  5. [Crystal report] fonctions utilisateur
    Par Roma dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/09/2004, 09h53

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