Si realmente quiere "grep" la salida formateada (cadenas de visualización), entonces vaya con el enfoque de Mike. Definitivamente hay momentos en que esto es útil. Sin embargo, si quiere intentar abarcar la naturaleza de la tubería de objetos de PowerShell, intente esto. En primer lugar, echa un vistazo a las propiedades de los objetos que fluyen a través de la canalización:
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()
<snip>
*Definition* Property System.String Definition {get;}
<snip>
Nota la propiedad Definición que es una cabecera que se ve cuando se muestra el resultado de Get-Alias (alias) por ejemplo:
PS> alias
CommandType Name *Definition*
----------- ---- ----------
Alias % ForEach-Object
<snip>
Por lo general, el título del encabezado coincide con el nombre de la propiedad, pero no siempre. Ahí es donde usar Get-Member es útil. Le muestra lo que necesita para "guiar" en contra. Ahora, si lo que desea "grep" es el contenido de la propiedad Definition, considere esto. En lugar de simplemente grepping valor que la propiedad de uno, en su lugar puede filtrar cada objeto AliasInfo en el pipepline por los contenidos de esta propiedad y se puede utilizar una expresión regular para hacerlo, por ejemplo:
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
En este ejemplo utilizo el caso -Objeto cmdlet para filtrar objetos en función de algún script arbitrario. En este caso, filtre por la propiedad Defintion que coincida con el 'alias' de expresiones regulares. Solo aquellos objetos que devuelven verdadero para ese filtro pueden propagarse por la canalización y formatearse para mostrarse en el host.
BTW si está escribiendo esto, entonces puede usar uno de los dos alias para Where-Object - 'Where' o '?'.Por ejemplo:
PS> gal | ?{$_.Definition -match '-Item*'}
En Powershell 1.0 no hay división. Puede hacer esto en su lugar: (alias | out-string -stream) | select-string Write – Mike
¿No les falta completamente el punto aquí? No es necesario que grep la salida de PowerShell. – x0n
@ x0n Bueno, hay casos en los que cuando estoy buscando rápidamente algo a través de la consola PS y no sé y/o me importa si se trata de una propiedad particular. Me resulta demasiado tedioso usar 'Get-Member' y luego usar la propiedad y la expresión correctas en el comando' where'. Y 'grep' es particularmente bueno en este caso. – OnesimusUnbound