This is a question I get rather frequently so I thought to write an article about it. Como o título implica, vou mostrar como você pode adicionar ou remover elementos a uma matriz PowerShell uma vez que tenha sido criado.
PowerShell Matrizes
Vamos começar com a definição de uma matriz como se trata do PowerShell documentação:
Uma matriz é uma estrutura de dados que é projetado para armazenar uma coleção de itens., Os itens podem ser do mesmo tipo ou tipos diferentes.Começando no Windows PowerShell 3.0, uma coleção de zero ou um objeto tem algumas propriedades de arrays.
a Criação de uma matriz no PowerShell é realmente simples e provavelmente você já o fez quando, por exemplo, obter uma lista de usuários do Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
O acima irá retornar um array de objetos do AD que contém todos os usuários de correspondência do filtro utilizado.,
é claro que você pode inicializar uma matriz vazia com a seguinte sintaxe:
$myArray = @()# Specify object type$myArray = @()
O acima irá inicializar um array vazio, que podemos, por exemplo, preencher com um ANÚNCIO consulta ou a adição de elementos estáticos como este
$myArray = (1,2,3,4,5)
O acima irá adicionar elementos de 1 a 5 para myArray objeto de instanciar um novo objeto com duração de 5
PowerShell Adicionar Elementos de um Array
Temos que ver como criar e atribuir valores a um array, mas o que se deseja adicionar um sexto elemento para myArray?, Se você tentar o seguinte
$myArray.Add(6)
Ele irá falhar com a seguinte exceção
O acima exceção é lançada como um PowerShell matriz é uma coleção de tamanho fixo e de erro é dizer apenas que, ele não pode ser estendida.,
Uma solução comum é usar o operador+=, por exemplo:
$myArray += 6# Print array's length$myArray.length6
Ao usar o operador += o que acontece sob o capô está
- PowerShell cria um novo array com os mesmos elementos que o antigo e o novo item
- PowerShell irá substituir matriz existente com o novo conteúdo
Tudo isso é transparente para o usuário, assim você não ver nenhuma diferença.,
Adicionar Elementos de uma Matriz a Entrar ArrayList
Se você deseja evitar a todo o copiar/mover dados você pode criar myArray como um ArrayList que é dinâmico e vai permitir que você adicionar ou remover elementos na mosca
da mesma forma, você pode remover elementos de um ArrayList como este
# Will corresponding item by index$myArrayList.RemoveAt(1)
Nota: o método de Remover aceitará valor do elemento para 1 no exemplo acima refere-se a valor que não o item do índice.,
Elenco para suprimir Adicionar método de impressão nova matriz de comprimento
Criar Lista de Matriz a maneira alternativa
O exemplo acima irá chamar o Novo método de Objeto para criar um novo ArrayList, mas isso é relativamente dispendioso em termos de recursos computacionais, de modo que o acima pode ser reescrito como:
$myArray = @()
além de ser mais curto tem a vantagem de evitar o desempenho negativo bater de Novo-Objeto e otimização de código é sempre uma boa ideia, especialmente quando estamos lidando com maior scripts.,34f072bc0″>
Fechar Notas
Ao escrever código, apesar de não ser exigido pelo PowerShell, eu tento sempre declarar o tipo de objeto que é útil saber, a qualquer momento, Propriedades e Métodos suportados pelo objeto, então eu sempre escrever
$myString = 'Some Text'
ao Invés de
$myString = 'Some Text'
Isto não é requerido pelo PowerShell, mas acho que ela ajuda a legibilidade do código e simplifica o trabalho com um objeto declarado 800/900 linhas no código, sem ter que saltar de volta para a variável de declaração.,
Leave a Reply