Share via


about_Simplified_Syntax

Descripción breve

Describe formas más sencillas y más naturales de scripting para colecciones de objetos.

Descripción larga

La sintaxis simplificada, introducida en Windows PowerShell 3.0, le permite crear algunos comandos de filtro sin usar bloques de scripts. La sintaxis simplificada se parece más al lenguaje natural y es principalmente útil con colecciones de objetos que se canalizan a comandos Where-Object y sus alias y ForEach-Object sus alias correspondientes where y foreach.

Puede usar un método en los miembros de una colección (normalmente, una matriz) sin hacer referencia a la variable $_ automática dentro de un bloque de script.

Tenga en cuenta las dos invocaciones siguientes:

Sintaxis estándar

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -FilterScript { $_.FriendlyName -eq 'Verisign' }
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -FilterScript { $_.GetKeyAlgorithm() }

Nota:

En el segundo comando, se llama al GetKeyAlgorithm método en cada objeto de la colección. Si el objeto recibido de la canalización no tiene un GetKeyAlgorithm método , el comando genera un error.

Sintaxis simplificada

En la sintaxis simplificada, los operadores de comparación que trabajan en miembros de objetos de una colección se implementan como parámetros. Además, puede invocar un método en objetos de una colección sin hacer referencia a la variable $_ automática dentro de un bloque de script. Compare las dos invocaciones siguientes con los ejemplos de sintaxis estándar:

Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object -Property FriendlyName -EQ 'Verisign'
Get-ChildItem Cert:\ -Recurse |
    ForEach-Object -MemberName GetKeyAlgorithm

Dado que los parámetros Property y MemberName son posicionales, puede omitirlos desde el comando . Con alias, puede simplificar aún más los comandos:

dir Cert:\LocalMachine\Root | Where FriendlyName -EQ 'Verisign'
dir Cert:\ -Recurse | ForEach GetKeyAlgorithm

Aunque ambas sintaxis funcionan, la sintaxis simplificada devuelve resultados sin hacer referencia a la variable $_ automática dentro de un bloque de script. La sintaxis simplificada lee más como una instrucción de lenguaje natural y puede ser más fácil de entender.

El nombre GetKeyAlgorithm del método se pasa como argumento para el parámetro MemberName de ForEach-Object. Cuando se invoca el método mediante la sintaxis simplificada, solo se llama al método para cada objeto de la canalización si ese objeto tiene ese método. Por lo tanto, obtendrá los mismos resultados, pero sin errores.

En el ejemplo siguiente, Description se pasa al parámetro MemberName de ForEach-Object. El comando muestra la descripción de cada objeto System.Diagnostics.Process devuelto por Get-Process.

Get-Process | foreach Description

En este ejemplo, el nombre GetFiles del método se pasa al parámetro MemberName del ForEach-Object comando. El .* valor se pasa al parámetro ArgumentList . Se GetFiles() llama al método con el parámetro .* de patrón de búsqueda para cada objeto System.IO.DirectoryInfo devuelto por Get-ChildItem.

Get-ChildItem /home -Directory | foreach GetFiles .*

Consulte también