Il y a 2 façons de faire une boucle de type for each en powershell.
Voici la première avec foreach :
#Version du 20 fevrier 2013
Clear-Host
$MonTableau = @()
$MonTableau += "Ligne 1"
$MonTableau += "Ligne 2"
$MonTableau += "Ligne 3"
$MonTableau += "Ligne 4"
#Méthode 1
foreach ($UneLigne in $MonTableau){
Write-Host $UneLigne
}
Lien vers le fichier : cliquez ici
Notez que pour quitter la boucle vous pouvez faire
foreach ($UneLigne in $MonTableau){
Write-Host $UneLigne
break
}
Lien vers le fichier : cliquez ici
La seconde :
#Version du 20 fevrier 2013
Clear-Host
$MonTableau = @()
$MonTableau += "Ligne 1"
$MonTableau += "Ligne 2"
$MonTableau += "Ligne 3"
$MonTableau += "Ligne 4"
for ($MonCompteur = 0; $MonCompteur -le $MonTableau.Length; $MonCompteur++){
Write-Host $MonTableau[$MonCompteur]
}
Lien vers le fichier : cliquez ici
La commande ForEach-Object est elle à utiliser pour effectuer une boucle derrière un | dont elle tire ses données.
Ci-dessous un exemple pour récupérer l'adresse mail des membres d'un groupe AD.
Get-ADGroupMember ne permet pas de récupérer directement l'adresse mail d'un membre de groupe, c'est pour cela que pour chaque membre, avec l'aide de la commande ForEach-Object, on fait appel à Get-ADUser pour avoir un complément d'information pour chaque user :
Import-Module ActiveDirectory
Get-ADGroupMember -identity "Nom groupr AD" | ForEach-Object {Get-ADUser -Identity $_.SamAccountName -property mail} | select name, SamAccountName, UserPrincipalName, mail | sort-object -property name | format-table
Lien vers le fichier : cliquez ici
Notez que l'on peut stocker le résultat d'une commande dans un objet puis lister chaque résultat un à un si l'objet n'est pas nul.
Exemple :
$Date = (Get-Date).AddDays(-2)
$objEvents = Get-WinEvent Application | Where-Object {$_.TimeCreated -ge $Date} | Select-Object -first 5 | Format-Table TimeCreated, LogName, Level, Id, ProviderName, Message
#if (!($objEvents -eq $null)){
#if ($objEvents){
if ($objEvents -ne $null){
add-content $MonFichier "Erreur détectée"
foreach ($OneVent in $objEvents){
$OneVent
#write-host $OneVent.LogName
}
}
Lien vers le fichier : cliquez ici
Pages Web
Site Web | Description |
---|---|
Foreach et ForEach-Object | Différence entre PowerShell Foreach et ForEach-Object |
Article(s) suivant(s)
Article(s) précédent(s)