Si vous voulez vraiment "grep" la sortie formatée (chaînes d'affichage), alors suivez l'approche de Mike. Il y a définitivement des moments où cela est utile. Cependant, si vous voulez essayer d'embrasser la nature de l'objet pipeline de PowerShell, essayez ceci. Tout d'abord, vérifiez les propriétés des objets qui descendent dans le pipeline :
PS> alias | Get-Member
TypeName: System.Management.Automation.AliasInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
*Définition* Property System.String Definition {get;}
Remarquez la propriété Definition qui est un en-tête que vous voyez lorsque vous affichez la sortie de Get-Alias (alias) par exemple :
PS> alias
CommandType Name *Définition*
----------- ---- ----------
Alias % ForEach-Object
Normalement, le titre de l'en-tête correspond au nom de la propriété mais pas toujours. C'est là que l'utilisation de Get-Member est utile. Cela vous montre ce dont vous avez besoin pour "scripter". Maintenant, si ce que vous voulez "grep" ce sont les contenus de la propriété Definition, envisagez ceci. Au lieu de simplement grep cette valeur de propriété, vous pouvez plutôt filtrer chaque objet AliasInfo dans le pipeline en fonction du contenu de cette propriété et vous pouvez utiliser une regex pour le faire par exemple :
PS> alias | Where-Object {$_.Definition -match 'alias'}
CommandType Name Definition
----------- ---- ----------
Alias epal Export-Alias
Alias gal Get-Alias
Alias ipal Import-Alias
Alias nal New-Alias
Alias sal Set-Alias
Dans cet exemple, j'utilise le cmdlet Where-Object pour filtrer les objets en fonction d'un script arbitraire. Dans ce cas, je filtre par la propriété Definition mise en correspondance avec la regex 'alias'. Seuls les objets qui retournent vrai pour ce filtre sont autorisés à se propager dans le pipeline et à être formatés pour l'affichage sur l'hôte.
Par ailleurs, si vous saisissez ceci, vous pouvez utiliser l'un des deux alias pour Where-Object - 'Where' ou '?'. Par exemple :
PS> gal | ?{$_.Definition -match '-Item*'}