Partilhar via


about_Simplified_Syntax

Breve descrição

Descreve maneiras mais fáceis e em linguagem mais natural de scripts de filtros para coleções de objetos.

Descrição longa

A sintaxe simplificada, introduzida no Windows PowerShell 3.0, permite criar alguns comandos de filtro sem usar blocos de script. A sintaxe simplificada se assemelha mais à linguagem natural, e é principalmente útil com coleções de objetos que são canalizados para comandos Where-Object e ForEach-Object ou seus aliases where correspondentes e foreach.

Você pode usar um método nos membros de uma coleção (mais comumente, uma matriz) sem se referir à variável $_ automática dentro de um bloco de script.

Considere as duas invocações a seguir:

Sintaxe padrão

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

Nota

No segundo comando, o GetKeyAlgorithm método é chamado em cada objeto da coleção. Se o objeto recebido do pipeline não tiver um GetKeyAlgorithm método, o comando produzirá um erro.

Sintaxe simplificada

Sob a sintaxe simplificada, os operadores de comparação que trabalham em membros de objetos em uma coleção são implementados como parâmetros. Além disso, você pode invocar um método em objetos em uma coleção sem fazer referência à variável $_ automática dentro de um bloco de script. Compare as duas invocações a seguir com os exemplos de sintaxe padrão:

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

Como os parâmetros Property e MemberName são posicionais, você pode omiti-los do comando. Usando aliases, você pode simplificar ainda mais os comandos:

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

Embora ambas as sintaxes funcionem, a sintaxe simplificada retorna resultados sem se referir à variável $_ automática dentro de um bloco de script. A sintaxe simplificada parece mais uma instrução de linguagem natural e pode ser mais fácil de entender.

O nome GetKeyAlgorithm do método é passado como um argumento para o parâmetro MemberName de ForEach-Object. Quando você invoca o método usando a sintaxe simplificada, o método é chamado para cada objeto no pipeline somente se esse objeto tiver esse método. Portanto, você obtém os mesmos resultados, mas sem erros.

No próximo exemplo, Description é passado para o parâmetro MemberName de ForEach-Object. O comando exibe a descrição de cada objeto System.Diagnostics.Process retornado pelo Get-Process.

Get-Process | foreach Description

Neste exemplo, o nome GetFiles do método é passado para o parâmetro MemberName do ForEach-Object comando. O .* valor é passado para o parâmetro ArgumentList . O GetFiles() método é chamado com o parâmetro .* de padrão de pesquisa para cada objeto System.IO.DirectoryInfo retornado por Get-ChildItem.

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

Consulte também