4 votes

Comment je fais une itération en PowerShell et comment je garde les résultats intermédiaires dans un tableau ou une liste?

Je suis totalement novice en PowerShell. Je viens de commencer à m'y intéresser hier. Quand j'ai trouvé une ressource appelée "Apprenez Windows PowerShell Maintenant Avant Que Ce Ne Soit une Urgence", j'ai réalisé à quel point le titre est approprié.

PowerShell offre déjà un ensemble très riche de primitives pour rechercher dans le registre. Cependant, mes besoins sont un peu plus complexes. Étant donné un ensemble de GUID, je veux les localiser tous dans le registre. Ensuite, en fonction des clés et des valeurs du registre, je veux comprendre leurs dépendances.

Mon objectif est de fournir un rapport détaillé des dépendances COM complètes.

Les bases que je dois connaître sont:

  1. Comment faire une itération en PowerShell?
  2. Comment conserver des résultats intermédiaires dans un tableau ou une liste?

1voto

Doltknuckle Points 6003

Essayons à nouveau.

L'itération en powershell se fait de l'une des trois manières suivantes:

  1. Utiliser la commande foreach sur un tableau: Foreach ($item in $array) { #actions }
  2. Utiliser l'action de sélection Powershell pour construire un tableau: $array = Select-childitem -Recurse
  3. Envoyer le tableau dans un filtre avec un tuyau: $array | where-object{$_ -like "Chaîne de recherche"}

La manière la plus facile de stocker les résultats intermédiaires est de les ajouter à une variable tableau initialisée.

$array = @() #Initialiser le tableau
$array += $item #Ajouter élément au tableau

Voici un exemple de code de base pour trouver quelque chose dans le registre.

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
}

Utiliser Get-ChildItem est une mauvaise façon de rechercher dans le registre mais cela fonctionne.

J'espère que cela vous aidera.

-1voto

Brandon Points 2580

1) Utilisez boucles. Les styles standard For, Foreach et Do/While sont tous disponibles.

2) Utilisez variables:

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

PowerShell ne nécessite pas de variables fortement typées, alors faites attention aux conversions magiques. :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X