Como faço a iteração no PowerShell e como mantenho os resultados intermediários em uma matriz ou lista?

4

Eu sou totalmente novo no PowerShell. Eu comecei a pegar ontem. Quando encontrei um recurso chamado "Aprenda o Windows PowerShell agora antes que seja uma emergência", percebi como o título é adequado.

O PowerShell já oferece um conjunto muito rico de primitivos para pesquisar o registro. No entanto, meus requisitos estão um pouco mais envolvidos. Dado um conjunto de GUIDs, quero localizá-los todos no registro. Então, com base nas chaves e valores do registro, quero descobrir suas dependências.

Meu objetivo é fornecer um relatório de detalhamento das dependências de COM completas.

O básico que preciso saber é:

  1. Como faço a iteração no PowerShell?
  2. Como faço para manter os resultados intermediários em uma matriz ou lista?
por Anthony Kong 09.03.2012 / 01:30

2 respostas

-1

1) Use ciclos . O estilo padrão For , Foreach e Do/While estão todos disponíveis.

2) Use variáveis :

$strComputers = @("Server1", "Server2", "Server3")
$strComputers.Count
$strComputers[0]
$strComputers[1]
$strComputers[2]

O PowerShell não requer variáveis strongmente tipadas, por isso, esteja atento às conversões mágicas. :)

    
por 09.03.2012 / 01:43
1

Vamos tentar de novo.

A iteração no powershell é feita de três maneiras:

  1. Use o comando foreach em uma matriz: Foreach ($ item in $ array) {#actions}
  2. Use a ação de seleção do Powershell para criar uma matriz: $ array = Select-childitem -Recurse
  3. Envie o array pelo pipe para um filtro: $ array | where-object {$ _ -like "String de pesquisa"}

A maneira mais fácil de armazenar resultados de intimidação é adicioná-lo a uma variável de matriz inicializada.

$array = @() #Initialize array
$array += $item #Add item to array

Aqui está um código de exemplo básico para encontrar algo no registro.

cls
$GUID = "*{3336F667-9049-4D46-98B6-4C743EEBC5B1}*"
$RegPath = "HKLM:\"
$Results = Get-ChildItem $RegPath -Recurse -ErrorAction SilentlyContinue | Where-Object{$_ -like $GUID}
foreach ($item in $Results)
{
    Write-Host $item
}

Usar Get-ChildItem é uma maneira ruim de pesquisar o registro, mas funciona.

Espero que isso ajude

    
por 10.03.2012 / 00:28

Tags