about_Arrays

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

Insira a introdução aqui.

TÓPICO

about_Arrays

DESCRIÇÃO BREVE

Descreve matrizes, que são estruturas de dados projetadas para armazenar coleções de itens.

DESCRIÇÃO LONGA

Uma matriz é uma estrutura de dados que foi projetada para armazenar uma coleção de itens. Os itens podem ser do mesmo tipo ou tipos diferentes.

A partir de Windows PowerShell® 3.0, uma coleção de zero ou um objeto tem algumas propriedades de matrizes.

CRIANDO E INICIALIZANDO UMA MATRIZ

Para criar e inicializar uma matriz, atribua vários valores a uma variável. Os valores armazenados na matriz são delimitados por uma vírgula e separados do nome de variável pelo operador de atribuição (=).

Por exemplo, para criar uma matriz chamada $A que contém os sete valores numéricos (int) 22, 5, 10, 8, 12, 9 e 80, digite:

$A = 22,5,10,8,12,9,80

Você também pode criar e inicializar uma matriz usando o operador de intervalo (..). Por exemplo, para criar e inicializar uma matriz chamada "$B" que contém os valores de 5 a 8, digite:

$B = 5..8

Como resultado, $B contém quatro valores: 5, 6, 7 e 8.

Quando nenhum tipo de dados é especificado, o Windows PowerShell cria cada matriz como uma matriz de objetos (digite: System.Object[]). Para determinar o tipo de dados de uma matriz, use o método GetType(). Por exemplo, para determinar o tipo de dados de uma matriz $a, digite:

$a.GetType()

Para criar uma matriz fortemente tipada, ou seja, uma matriz que pode conter apenas valores de um tipo específico, converta a variável como um tipo de matriz, como string[], long[] ou int32[]. Para converter uma matriz, preceda o nome da variável por um tipo de matriz entre colchetes. Por exemplo, para criar uma matriz de inteiros de 32 bits chamada $ia que contém quatro inteiros (1.500, 2.230, 3.350 e 4.000), digite:

[int32[]]$ia = 1500,2230,3350,4000

Como resultado, a matriz $ia pode conter apenas números inteiros.

Você pode criar matrizes que são convertidas em qualquer tipo com suporte no Microsoft .NET Framework. Por exemplo, os objetos que Get-Process recupera para representar processos são do tipo System.Diagnostics.Process. Para criar uma matriz fortemente tipada de objetos de processo, digite o seguinte comando:

[Diagnostics.Process[]]$zz = Get-Process

O OPERADOR DE SUBEXPRESSÃO DA MATRIZ

O operador de subexpressão da matriz cria uma matriz, mesmo que ele contenha zero ou um objeto.

A sintaxe do operador de matriz é da seguinte maneira:

@( ... )

Você pode usar o operador de matriz para criar uma matriz de zero ou um objeto.

PS C:\>$a = @("One")
PS C:\>$a.Count
1

PS C:\>$b = @()
PS C:\>$b.Count
0

O operador de matriz é particularmente útil em scripts quando você estiver recebendo objetos, mas não souber quantos objetos serão recebidos.

PS C:\> $p = @(Get-Process Notepad)

Para obter mais informações sobre o operador de subexpressão de matriz, consulte about_Operators.

LENDO UMA MATRIZ

Você pode se referir a uma matriz usando seu nome de variável. Para exibir todos os elementos na matriz, digite o nome da matriz. Por exemplo:

$a

Você pode se referir a elementos em uma matriz usando um índice, começando na posição 0. Coloque o número de índice entre colchetes. Por exemplo, para exibir o primeiro elemento em uma matriz $a, digite:

$a[0]

Para exibir o terceiro elemento em uma matriz $a, digite:

$a[2]

Números negativos são contados do final da matriz. Por exemplo, "-1" refere-se ao último elemento da matriz. Para exibir os últimos três elementos da matriz, digite:

$a[-3..-1]

Entretanto, tenha cuidado ao usar essa notação.

$a[0..-2]

Esse comando não faz referência a todos os elementos da matriz, exceto o último. Ele se refere ao primeiro, último e o segundo ao último elementos na matriz.

Você pode usar o operador de intervalo para exibir um subconjunto de todos os valores em uma matriz. Por exemplo, para exibir os elementos de dados na posição de índice de 1 a 3, digite:

$a[1..3]

Você pode usar o operador de adição (+) para combinar um intervalo com uma lista de elementos em uma matriz. Por exemplo, para exibir os elementos em posições de índice 0, 2 e 4 a 6, digite:

$a[0,2+4..6]

Para determinar quantos itens estão em uma matriz, use a propriedade Length ou seu alias Count.

$a.Count

Você também pode usar construções de loop, como ForEach, e loops While e For, para se referir a elementos de uma matriz. Por exemplo, para usar um loop ForEach para exibir os elementos em uma matriz $a, digite:

foreach ($element in $a) {$element}

O loop Foreach itera por meio da matriz e retorna cada valor na matriz até atingir o final da matriz.

O loop For é útil quando você estiver incrementando contadores ao examinar os elementos em uma matriz. Por exemplo, para usar um loop For para retornar todos os outros valores em uma matriz, digite:

for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}

Você pode usar um loop While para exibir os elementos em uma matriz até que uma condição definida não seja mais verdadeira. Por exemplo, para exibir os elementos em uma matriz $a enquanto o índice da matriz for menor que 4, digite:

$i=0
while($i -lt 4) {$a[$i]; $i++}

OBTER OS MEMBROS DE UMA MATRIZ

Para obter as propriedades e métodos de uma matriz, como a propriedade Length e o método SetValue, use o parâmetro InputObject do cmdlet Get-Member.

Quando você direcionar uma matriz para Get-Member, o Windows PowerShell envia os itens um por vez e Get-Member retorna o tipo de cada item na matriz (ignorando as duplicatas).

Quando você usa o parâmetro InputObject, Get-Member retorna os membros da matriz.

Por exemplo, o comando a seguir obtém os membros da matriz em uma variável $a.

Get-Member -InputObject $a

Você também pode obter os membros de uma matriz digitando uma vírgula (,) antes do valor que é canalizado para o cmdlet Get-Member. A vírgula torna a matriz o segundo item em uma matriz de matrizes. O Windows PowerShell canaliza as matrizes, uma por vez, e Get-Member retorna os membros da matriz.

,$a | Get-Member

,(1,2,3) | Get-Member

MANIPULANDO UMA MATRIZ

Você pode alterar os elementos em uma matriz, adicionar um elemento a uma matriz e combinar os valores de duas matrizes em uma terceira matriz.

Para alterar o valor de um elemento específico em uma matriz, especifique o nome da matriz e o índice do elemento que você deseja alterar e, em seguida, use o operador de atribuição (=) para especificar um novo valor para o elemento. Por exemplo, para alterar o valor do segundo item em uma matriz $a (índice de posição 1) para 10, digite:

$a[1] = 10

Você também pode usar o método SetValue de uma matriz para alterar um valor. O exemplo a seguir altera o segundo valor (índice de posição 1) da matriz $a para 500:

$a.SetValue(500,1)

Você pode usar o operador += para adicionar um elemento a uma matriz. Ao usá-lo, o Windows PowerShell realmente cria uma nova matriz com os valores da matriz original e o valor agregado. Por exemplo, para adicionar um elemento com um valor de 200 na matriz na variável $a, digite:

$a += 200

Não é fácil excluir elementos de uma matriz, mas você pode criar uma nova matriz que contém apenas elementos selecionados de uma matriz existente. Por exemplo, para criar a matriz $t com todos os elementos na matriz $a, com exceção do valor na posição de índice 2, digite:

$t = $a[0,1 + 3..($a.length - 1)]

Para combinar duas matrizes em uma única matriz, use o operador de adição (+). O exemplo a seguir cria duas matrizes, combina-as e, em seguida, exibe a matriz combinada resultante.

$x = 1,3
$y = 5,9
$z = $x + $y

Como resultado, a matriz $z contém 1, 3, 5 e 9.

Para excluir uma matriz, atribua um valor de $null à matriz. O comando a seguir exclui a matriz na variável $a.

$a = $null

Você também pode usar o cmdlet Remove-Item, mas atribuir um valor de $null é mais rápido, especialmente para grandes matrizes.

MATRIZES DE ZERO OU UM

A partir de Windows PowerShell 3.0, uma coleção de zero ou um objeto tem a propriedade Count e Length. Além disso, você pode indexar em uma matriz de um objeto. Esse recurso ajuda você a evitar erros de script que ocorrem quando um comando que espera uma coleção obtém menos de dois itens.

Os exemplos a seguir demonstram esse recurso.

#Zero objects
$a = $null
$a.Count
0
$a.Length
0

#One object
$a = 4
$a.Count
1
$a.Length
1
$a[0]
4
$a[-1]
4

CONSULTE TAMBÉM

about_Assignment_Operators

about_Hash_Tables

about_Operators

about_For

about_Foreach

about_While