Question arrêt dans le pipeline

Plus d'informations
il y a 14 ans 1 mois #11545 par Gaga
arrêt dans le pipeline a été créé par Gaga
salut,

J'aimerais stopper \"mon flux d'objet\" dans un pipeline quand je le souhaite et récupérer les objets. Je suis pas clair ? :P exemple :

[code:1]$variable = gci D:\exemple | foreach { $i=0 } { $i++ ; if ($i -le 3) { $_ } else { break } } { }[/code:1]

$variable est nulle (non renseigné) et pourtant j'ai bien mon flux d'objet (dans mon exemple 3 fichiers) :

gci D:\exemple | foreach { $i=0 } { $i++ ; if ($i -le 3) { $_ } else { break } } { }


Répertoire : D:\exemple


Mode LastWriteTime Length Name
----



----
d---- 26/03/2012 21:35 .homeplayer
d-r-- 17/02/2012 16:54 Contacts
d-r-- 17/04/2012 21:54 Desktop


comprends pas !! Faut pas mettre break pour sortir .... comment sortir proprement du pipeline tout en récupérant les objets (pas tous) dans une variable ???

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 1 mois #11546 par SiSMik
Réponse de SiSMik sur le sujet Re:arrêt dans le pipeline
Bonjour,

Stopper une commande avec break peut avoir des incidences sur d'autres scripts fonctionnant ce n'est à mon avis pas la bonne méthode à utiliser.

[code:1]gci D:\exemple | select -first 3 [/code:1]

Comme ça tu prends les 3 premiers :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 1 mois #11547 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:arrêt dans le pipeline
Bonjour,

Tu peux aussi consulter l'aide disponible dans powershell via :
[code:1]Help about_break[/code:1]

On remarque que le break est utilisé dans des structures d'itération for/foreach/while/do/switch.

Ici tu essayes de l'utiliser dans une cmdlet ce qui n'est pas prévu par PowerShell à mon avis.

Bien Cordialement,
Richard Lazaro.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 1 mois #11557 par Gaga
Réponse de Gaga sur le sujet Re:arrêt dans le pipeline

Stopper une commande avec break peut avoir des incidences sur d'autres scripts fonctionnant ce n'est à mon avis pas la bonne méthode à utiliser.

[code:1] gci D:\exemple | select -first 3 [/code:1]

Comme ça tu prends les 3 premiers


En fait j'aimerais stopper le flux d'objet dans le pipeline dès qu'une condition sur un objet (dans le flux) est satisfaite.
Par ex, la cmdlet get-winevent nous renvois des objets représentant les évènements dans un journal du plus récent au plus vieux, j'aurais aimé ne sélectionner que les évènements des 5 dernières minutes, sans charger tout le journal dans une variable avant de travailler dessus. Car si le journal contient > milliers de lignes, ben ça prends un temps foufoufoufou !!

Tu peux aussi consulter l'aide disponible dans powershell

Arfff j'ai pas trouvé mon bonheur, je vais encore chercher dans les help/doc/livres si je trouve qq chose.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 1 mois #11558 par SiSMik
Réponse de SiSMik sur le sujet Re:arrêt dans le pipeline
Tu peux mettre des filtres de ce genre
[code:1]Get-EventLog -After $time[/code:1]
Du coup ça récupère les log que depuis un certain $time :)
Ce qui n'empêche pas d'être plus pointu dans les filtres
[code:1]Get-EventLog -After $time -LogName Security [/code:1]
Et de mettre une clause where dans le pipe...

Voili voilou
@+

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 1 mois #11559 par xyz
Réponse de xyz sur le sujet Re:arrêt dans le pipeline
Salut,
benduru écrit:

Comme ça tu prends les 3 premiers

Mais PS itére tout de même sur la totalité de la collection, c'est trompeur. CE comportement devrait changer dans la v3, et si je me souviens bien cette version proposera un attribut pour gérer ces cas là :

# The SupportsPaging parameter of the Cmdlet attribute allows a user
# to specify the -IncludeTotalCount, -Skip, and -First parameters, which
# are used for paging the results from a data-source query operatio

Richard Lazaro écrit:

Ici tu essayes de l'utiliser dans une cmdlet ce qui n'est pas prévu par PowerShell à mon avis.

Si, enfin le langage le permet, mais c'est le comportement actuel qui n'est pas celui que l'on aimerait avoir.
Il y a qq temps, Tobias Weltner a rédigé un article sur le sujet, voir aussi le commentaire très important de Jeffrey Snover.
L'autre approche est de mémoriser les données reçues dans un variable déclarée avant le pipeline, Janel avait rédigé un post sur le sujet, mais son blog n'existe plus.
benduru écrit:

Tu peux mettre des filtres de ce genre

Oui, c'est la bonne approche ici, mais elle n'est pas tjr possible.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.046 secondes
Propulsé par Kunena