Scinde une chaîne avec PowerShell et faire quelque chose avec chaque jeton

Je veux diviser chaque ligne d'un tuyau sur des espaces, puis imprimer chaque jeton sur sa propre ligne.

Je me rends compte que je peux obtenir ce résultat en l'utilisant:

(cat someFileInsteadOfAPipe).split(" ")

Mais j'en veux plus de flexibilité. Je veux être capable de faire à peu près n'importe quoi avec chaque jeton. (J'ai l'habitude d'utiliser AWK sur Unix, et je vais essayer d'obtenir les mêmes fonctionnalités.)

J'ai actuellement:

echo "Once upon a time there were three little pigs" | %{$data = $_.split(" "); Write-Output "$($data[0]) and whatever I want to output with it"}

Qui, évidemment, n'imprime que le premier jeton. Est-il un moyen pour moi de for-each sur les jetons, l'impression de chaque tour?

Aussi, le %{$data = $_.split(" "); Write-Output "$($data[0])"} partie que j'ai obtenu à partir d'un blog, et je ne comprends vraiment pas ce que je fais, ni comment la syntaxe fonctionne.

Je veux google pour elle, mais je ne sais pas comment l'appeler. S'il vous plaît aidez-moi avec un mot ou deux à Google, ou un lien à m'expliquer ce que le % et tous les $ de symboles, ainsi que l'importance de l'ouverture et de la fermeture de parenthèses.

Je me rends compte que je ne peux pas vraiment utiliser (cat someFileInsteadOfAPipe).split(" "), depuis le fichier (ou préférable canal entrant) contient plus d'une ligne.

À l'égard de certaines réponses:

Si vous utilisez Select-String pour filtrer la sortie avant de segmentation, vous devez garder à l'esprit que la sortie de la Select-String commande n'est pas une collection de chaînes de caractères, mais une collection de MatchInfo objets. Pour obtenir de la chaîne que vous voulez partager, vous devez accéder à la Line propriété de la MatchInfo objet, comme suit:

cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}