Articles

PowerShell: obtendo propriedades de objetos em Arrays

Posted by admin

em PowerShell, muitas vezes executo comandos que devolvem arrays que preciso filtrar. Depois de filtrar o objecto que procuro, preciso de ler uma propriedade desse objecto. Há algumas maneiras de fazer isto. Aqui estão três.

estes são também bons exemplos se você é novo no PowerShell e tentar mudar da mentalidade do Linux de processar strings para a mentalidade PowerShell de manipular objetos.,

para estes exemplos estaremos usando um array filtrado de Get-Process:

Select-Object lê propriedades de objetos. Podemos pipe é o objeto que encontrei:

Get-Process | Where-Object ProcessName -Match "update" | Select-Object cpu CPU ---380.761615

neste caso, Where-Object retorna um objeto e Select-Object lê a propriedade fora dele, mas isso ainda funciona se nós corresponder a vários processos. Então, Where-Object devolve um array que é desempacotado pelo gasoduto PowerShell e enviado para Select-Object um de cada vez.,

isto é basicamente um filtro de propriedades. Ele ainda retorna uma matriz de objetos de processo, mas esses objetos só têm a única propriedade que você selecionou. Podemos ver isso com Get-Member:

quatro métodos, mas apenas uma propriedade.

Método 2: Subexpressão

Se a gente captura a saída de nossas correspondência de comando em uma subexpressão, podemos acessar as propriedades do objeto usando notação, como faríamos com qualquer variável:

$(Get-Process | Where-Object ProcessName -Match "update").cpu380.761615

Isso também funciona se a nossa correspondência devolvida vários objetos., A subexpressão irá conter um array e PowerShell irá obter automaticamente a propriedade cpu de cada objeto nesse array.

Ao contrário do filtro de Select-Object, isto não devolve objectos com uma propriedade cpu. Em vez disso, ele retorna um double (número) com o valor real:

Método 3: Loop

Como qualquer saída, pode canalizar o nosso jogo em um ForEach-Object loop e usar o $_ variável para acessar as propriedades de cada item o loop vê:

Get-Process | Where-Object ProcessName -Match "update" | ForEach-Object {$_.cpu}381.625785

O loop de trabalho de curso em vários objectos.,

tal como a sub-expressão, isto devolve o valor actual em vez de um objecto com uma propriedade.Happy automating!Adam precisa de mais do que apenas este artigo? Estou disponível para consultas.

Poderá também querer verificar estes artigos relacionados:

  • Como Usar O ‘Out-String’ em PowerShell: Don’t
  • Script DSC sem cabeça
  • PowerShell Install-Module: Use Install-Package Instead

Leave A Comment