Comment obtenir que Select-Object renvoie un type brut (par exemple, String) plutôt que PSCustomObject?

StackOverflow https://stackoverflow.com/questions/618749

  •  03-07-2019
  •  | 
  •  

Question

Le code suivant me donne un tableau de PSCustomObjects, comment puis-je l'obtenir pour retourner un tableau de chaînes?

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Le code suivant me donne un tableau de PSCustomObjects, comment puis-je l'obtenir pour retourner un tableau de chaînes?

<*>

(Deuxième question, à quoi sert la partie psiscontainer? Je l'ai copiée à partir d'un exemple en ligne.)

Modification post-acceptation: Deux bonnes réponses, j'aimerais pouvoir les cocher toutes les deux. Ont attribué la réponse originale.

.psiscontainer)}

(Deuxième question, à quoi sert la partie psiscontainer? Je l'ai copiée à partir d'un exemple en ligne.)

Modification post-acceptation: Deux bonnes réponses, j'aimerais pouvoir les cocher toutes les deux. Ont attribué la réponse originale.

Était-ce utile?

La solution

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {'hello'; 

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {'hello'; 

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {'hello'; 

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

Get-ChildItem $directory -Recurse

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

Select-Object FullName

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)}

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)}

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName; 1; 2; 3}

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)}

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt le système de fichiers en créant des objets FileSystemInfo qui représentent chaque fichier et répertoire qu'il rencontre, puis les met dans le pipeline.

<*>

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.FullName}

Select-Object prend chaque objet FileSystemInfo à son arrivée, en extrait la propriété FullName (qui est un chemin d'accès dans ce cas), place cette propriété dans un nouvel objet personnalisé qu'il a créé et insère cet objet personnalisé dans le pipeline.

<*>

Ceci est un filtre. Il prend chaque objet, l'examine et le renvoie ou le jette selon certaines conditions. Votre code ici a un bug, au fait. Les objets personnalisés qui arrivent ici n'ont pas de propriété psiscontainer. Cette étape ne fait réellement rien. Le code de Sung Meister est meilleur.

<*>

Foreach, dont le nom long est ForEach-Object, récupère chaque objet au fur et à mesure de son arrivée, puis saisit la propriété FullName, une chaîne, à partir de celui-ci. Maintenant, voici la partie subtile: Toute valeur qui n'est pas consommée, c'est-à-dire qui n'est pas capturée par une variable ou supprimée d'une manière ou d'une autre, est placée dans le pipeline de sortie. En guise d’expérience, remplacez cette étape par ceci:

<*>

Essayez-le et examinez le résultat. Il y a quatre valeurs dans ce bloc de code. Aucun d'entre eux n'est consommé. Notez qu'ils apparaissent tous dans la sortie. Maintenant, essayez ceci:

<*>

Notez que l'une des valeurs est capturée par une variable. Il n'apparaît pas dans le pipeline de sortie.

.psiscontainer)} | foreach {

Vous devez simplement choisir la propriété que vous voulez parmi les objets. FullName dans ce cas.

<*>

Modifier: Explication de Mark, qui demande: "Que fait le foreach?" Qu'est-ce que l'énumération est terminée? & Quot;

L'explication de Sung Meister est très bonne, mais je vais ajouter une procédure pas à pas ici, car elle pourrait être utile.

Le concept clé est le pipeline. Imaginez une série de balles de ping-pong roulant dans un tube étroit les unes après les autres. Ce sont les objets dans le pipeline. Chaque étape du pipeline - les segments de code séparés par des caractères de tuyau (|) - est traversée par un tuyau. La sortie d'un étage est connectée à l'entrée de l'étage suivant. Chaque étape prend les objets au fur et à mesure qu'ils arrivent, leur effectue des tâches et les renvoie dans le pipeline de sortie ou envoie de nouveaux objets de remplacement.

<*>

Get-ChildItem parcourt

Autres conseils

Pour obtenir la chaîne du nom de fichier, vous pouvez utiliser

$files = Get-ChildItem $directory -Recurse | Where-Object {!(

Pour obtenir la chaîne du nom de fichier, vous pouvez utiliser

<*>

Le paramètre -ExpandProperty vous permet de récupérer un objet en fonction du type de la propriété spécifiée.

D'autres tests ont montré que cela ne fonctionnait pas avec la V1, mais que cette fonctionnalité était corrigée à partir de la V2 CTP3.

.psiscontainer)} | Select-Object -ExpandProperty FullName

Le paramètre -ExpandProperty vous permet de récupérer un objet en fonction du type de la propriété spécifiée.

D'autres tests ont montré que cela ne fonctionnait pas avec la V1, mais que cette fonctionnalité était corrigée à partir de la V2 CTP3.

Pour la question n ° 1

J'ai supprimé "select-object". partie - elle est redondante et déplacée " où " filtrer avant "foreach" " contrairement à Réponse de dangph - Filtrez dès que possible afin de ne gérer qu'un sous-ensemble de ce que vous devez traiter dans le pipeline suivant.

$files = Get-ChildItem $directory -Recurse | Where-Object {!

Pour la question n ° 1

J'ai supprimé "select-object". partie - elle est redondante et déplacée " où " filtrer avant "foreach" " contrairement à Réponse de dangph - Filtrez dès que possible afin de ne gérer qu'un sous-ensemble de ce que vous devez traiter dans le pipeline suivant.

>pushd HKLM:\SOFTWARE
>ls | gm

Cet extrait de code se lit essentiellement

  • Obtention récursive de tous les fichiers du chemin complet de tous les fichiers (répertoire Get-ChildItem $ -Recurse)
  • Filtrer les répertoires (Where-Object {! $ _. PsIsContainer})
  • Renvoie le nom de fichier complet uniquement (foreach {$ _. FullName})
  • Enregistrer tous les noms de fichiers dans $ fichiers

Notez que pour foreach {$ _. Nom complet} , dans PowerShell, la dernière instruction d'un bloc de script ({...}) est renvoyée, dans ce cas $ _. Nom complet de type chaîne

Si vous avez vraiment besoin d'un objet brut, vous n'avez rien à faire après vous être débarrassé de "select-object". Si vous utilisiez Select-Object mais souhaitez accéder à un objet brut, utilisez "PsBase", qui est une question totalement différente (sujet) - Reportez-vous à " Quoi de neuf avec PSBASE, PSEXTENDED, PSADAPTED et PSOBJECT? " pour plus d'informations à ce sujet

Pour la question n ° 2

De plus, filtrer par ! $ _. PsIsContainer signifie que vous excluez un objet de niveau conteneur. Dans votre cas, vous effectuez Get-ChildItem sur un FileSystem (vous pouvez voir les fournisseurs PowerShell via Get-PsProvider), de sorte que le conteneur est un DirectoryInfo (dossier)

PsIsContainer signifie différentes choses sous différents fournisseurs PowerShell; Par exemple, pour le fournisseur Registry , PsIsContainer est de type Microsoft.Win32.RegistryKey Essayez ceci:

get-help foreach

[MISE À JOUR] à la question suivante: Que fait le foreach? Qu'est-ce que l'énumération est terminée? Pour clarifier, "foreach". est un alias pour " Foreach-Object " Vous pouvez le savoir par

get-alias foreach

- ou -

<*>

Maintenant, dans ma réponse, "foreach". énumère chaque instance d'objet de type FileInfo renvoyé par pipe précédente (qui a filtré les répertoires). FileInfo a une propriété appelée Nom complet et c’est ce que "foreach". énumère plus.
Et vous référencez un objet passé par pipeline via une variable de pipeline spéciale appelée "$ _". qui est de type FileInfo dans le contexte du bloc de script de "foreach".

.PsIsContainer} | foreach {

Pour la question n ° 1

J'ai supprimé "select-object". partie - elle est redondante et déplacée " où " filtrer avant "foreach" " contrairement à Réponse de dangph - Filtrez dès que possible afin de ne gérer qu'un sous-ensemble de ce que vous devez traiter dans le pipeline suivant.

<*>

Cet extrait de code se lit essentiellement

  • Obtention récursive de tous les fichiers du chemin complet de tous les fichiers (répertoire Get-ChildItem $ -Recurse)
  • Filtrer les répertoires (Where-Object {! $ _. PsIsContainer})
  • Renvoie le nom de fichier complet uniquement (foreach {$ _. FullName})
  • Enregistrer tous les noms de fichiers dans $ fichiers

Notez que pour foreach {$ _. Nom complet} , dans PowerShell, la dernière instruction d'un bloc de script ({...}) est renvoyée, dans ce cas $ _. Nom complet de type chaîne

Si vous avez vraiment besoin d'un objet brut, vous n'avez rien à faire après vous être débarrassé de "select-object". Si vous utilisiez Select-Object mais souhaitez accéder à un objet brut, utilisez "PsBase", qui est une question totalement différente (sujet) - Reportez-vous à " Quoi de neuf avec PSBASE, PSEXTENDED, PSADAPTED et PSOBJECT? " pour plus d'informations à ce sujet

Pour la question n ° 2

De plus, filtrer par ! $ _. PsIsContainer signifie que vous excluez un objet de niveau conteneur. Dans votre cas, vous effectuez Get-ChildItem sur un FileSystem (vous pouvez voir les fournisseurs PowerShell via Get-PsProvider), de sorte que le conteneur est un DirectoryInfo (dossier)

PsIsContainer signifie différentes choses sous différents fournisseurs PowerShell; Par exemple, pour le fournisseur Registry , PsIsContainer est de type Microsoft.Win32.RegistryKey Essayez ceci:

<*>

[MISE À JOUR] à la question suivante: Que fait le foreach? Qu'est-ce que l'énumération est terminée? Pour clarifier, "foreach". est un alias pour " Foreach-Object " Vous pouvez le savoir par

<*>

- ou -

<*>

Maintenant, dans ma réponse, "foreach". énumère chaque instance d'objet de type FileInfo renvoyé par pipe précédente (qui a filtré les répertoires). FileInfo a une propriété appelée Nom complet et c’est ce que "foreach". énumère plus.
Et vous référencez un objet passé par pipeline via une variable de pipeline spéciale appelée "$ _". qui est de type FileInfo dans le contexte du bloc de script de "foreach".

.FullName}

Cet extrait de code se lit essentiellement

  • Obtention récursive de tous les fichiers du chemin complet de tous les fichiers (répertoire Get-ChildItem $ -Recurse)
  • Filtrer les répertoires (Where-Object {! $ _. PsIsContainer})
  • Renvoie le nom de fichier complet uniquement (foreach {$ _. FullName})
  • Enregistrer tous les noms de fichiers dans $ fichiers

Notez que pour foreach {$ _. Nom complet} , dans PowerShell, la dernière instruction d'un bloc de script ({...}) est renvoyée, dans ce cas $ _. Nom complet de type chaîne

Si vous avez vraiment besoin d'un objet brut, vous n'avez rien à faire après vous être débarrassé de "select-object". Si vous utilisiez Select-Object mais souhaitez accéder à un objet brut, utilisez "PsBase", qui est une question totalement différente (sujet) - Reportez-vous à " Quoi de neuf avec PSBASE, PSEXTENDED, PSADAPTED et PSOBJECT? " pour plus d'informations à ce sujet

Pour la question n ° 2

De plus, filtrer par ! $ _. PsIsContainer signifie que vous excluez un objet de niveau conteneur. Dans votre cas, vous effectuez Get-ChildItem sur un FileSystem (vous pouvez voir les fournisseurs PowerShell via Get-PsProvider), de sorte que le conteneur est un DirectoryInfo (dossier)

PsIsContainer signifie différentes choses sous différents fournisseurs PowerShell; Par exemple, pour le fournisseur Registry , PsIsContainer est de type Microsoft.Win32.RegistryKey Essayez ceci:

<*>

[MISE À JOUR] à la question suivante: Que fait le foreach? Qu'est-ce que l'énumération est terminée? Pour clarifier, "foreach". est un alias pour " Foreach-Object " Vous pouvez le savoir par

<*>

- ou -

<*>

Maintenant, dans ma réponse, "foreach". énumère chaque instance d'objet de type FileInfo renvoyé par pipe précédente (qui a filtré les répertoires). FileInfo a une propriété appelée Nom complet et c’est ce que "foreach". énumère plus.
Et vous référencez un objet passé par pipeline via une variable de pipeline spéciale appelée "$ _". qui est de type FileInfo dans le contexte du bloc de script de "foreach".

Pour la V1, ajoutez le filtre suivant à votre profil:

filter Get-PropertyValue([string]$name) { 

Pour la V1, ajoutez le filtre suivant à votre profil:

gci . -r | ?{!

Pour la V1, ajoutez le filtre suivant à votre profil:

filter Get-PropertyValue([string]$name) { 

Pour la V1, ajoutez le filtre suivant à votre profil:

<*>

Ensuite, vous pouvez faire ceci:

<*>

BTW, si vous utilisez la extensions de la communauté PowerShell , vous l'avez déjà.

En ce qui concerne la possibilité d’utiliser Select-Object -Expand dans V2, c’est un truc mignon mais qui n’est pas évident et qui n’est vraiment pas ce que Select-Object ni -Expand étaient destinés à faire. -Expand consiste à aplatir, tout comme SelectMany et Select-Object de LINQ consiste à projeter plusieurs propriétés sur un objet personnalisé.

.$name }

Ensuite, vous pouvez faire ceci:

<*>

BTW, si vous utilisez la extensions de la communauté PowerShell , vous l'avez déjà.

En ce qui concerne la possibilité d’utiliser Select-Object -Expand dans V2, c’est un truc mignon mais qui n’est pas évident et qui n’est vraiment pas ce que Select-Object ni -Expand étaient destinés à faire. -Expand consiste à aplatir, tout comme SelectMany et Select-Object de LINQ consiste à projeter plusieurs propriétés sur un objet personnalisé.

.psiscontainer} | Get-PropertyName fullname

Ensuite, vous pouvez faire ceci:

<*>

BTW, si vous utilisez la extensions de la communauté PowerShell , vous l'avez déjà.

En ce qui concerne la possibilité d’utiliser Select-Object -Expand dans V2, c’est un truc mignon mais qui n’est pas évident et qui n’est vraiment pas ce que Select-Object ni -Expand étaient destinés à faire. -Expand consiste à aplatir, tout comme SelectMany et Select-Object de LINQ consiste à projeter plusieurs propriétés sur un objet personnalisé.

.$name }

Ensuite, vous pouvez faire ceci:

<*>

BTW, si vous utilisez la extensions de la communauté PowerShell , vous l'avez déjà.

En ce qui concerne la possibilité d’utiliser Select-Object -Expand dans V2, c’est un truc mignon mais qui n’est pas évident et qui n’est vraiment pas ce que Select-Object ni -Expand étaient destinés à faire. -Expand consiste à aplatir, tout comme SelectMany et Select-Object de LINQ consiste à projeter plusieurs propriétés sur un objet personnalisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top