Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Descrição curta
Descreve maneiras mais fáceis e naturais de criar 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 scriptblocks. A sintaxe simplificada se assemelha mais à linguagem natural e é útil principalmente com coleções de objetos que são canalizados para comandos Where-Object e ForEach-Object ou seus aliases correspondentes where 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 scriptblock.
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 método GetKeyAlgorithm é chamado em cada objeto da coleção. Se o objeto recebido do pipeline não tiver um método GetKeyAlgorithm, o comando produzirá um erro.
Sintaxe simplificada
Sob a sintaxe simplificada, os operadores de comparação que funcionam 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 se referir à variável $_ automática dentro de um scriptblock. 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 Propriedade e MemberName são posicionais, você pode omití-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 scriptblock. A sintaxe simplificada é mais semelhante a uma instrução de linguagem natural e pode ser mais fácil de entender.
O nome do método GetKeyAlgorithm é 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 por Get-Process.
Get-Process | foreach Description
Neste exemplo, o nome do método GetFiles é passado para o parâmetro MemberName do comando ForEach-Object. O valor .* é passado para o parâmetro ArgumentList. O método GetFiles() é 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 .*