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 .*