Write-Progress
Affiche une barre de progression dans une fenêtre Commande PowerShell.
Syntax
Write-Progress
[-Activity] <String>
[[-Status] <String>]
[[-Id] <Int32>]
[-PercentComplete <Int32>]
[-SecondsRemaining <Int32>]
[-CurrentOperation <String>]
[-ParentId <Int32>]
[-Completed]
[-SourceId <Int32>]
[<CommonParameters>]
Description
L’applet Write-Progress
de commande affiche une barre de progression dans une fenêtre de commande PowerShell qui représente la status d’une commande ou d’un script en cours d’exécution. Vous pouvez sélectionner les indicateurs reflétés par la barre et le texte qui s'affiche au-dessus et en dessous de celle-ci.
PowerShell 7.2 a ajouté la variable automatique utilisée pour contrôler la $PSStyle
façon dont PowerShell affiche certaines informations à l’aide de séquences d’échappement ANSI. Le $PSStyle.Progress
membre vous permet de contrôler le rendu de la barre d’affichage de progression.
$PSStyle.Progress.Style
– Chaîne ANSI définissant le style de rendu.$PSStyle.Progress.MaxWidth
– Définit la largeur maximale de l’affichage. La valeur par défaut est120
. La valeur minimale est 18.$PSStyle.Progress.View
– Énumération avec les valeursMinimal
etClassic
.Classic
est le rendu existant sans modification.Minimal
est le rendu minimal à une seule ligne.Minimal
est la valeur par défaut.
Pour plus d’informations sur $PSStyle
, consultez about_ANSI_Terminals.md.
Notes
Si l’hôte ne prend pas en charge le terminal virtuel, $PSStyle.Progress.View
est automatiquement défini sur Classic
.
Exemples
Exemple 1 : Afficher la progression d’une boucle For
for ($i = 1; $i -le 100; $i++ ) {
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i
Start-Sleep -Milliseconds 250
}
Cette commande affiche la progression d’une for
boucle qui compte de 1 à 100.
L’applet Write-Progress
de commande inclut un en-tête Activity
de barre status, une ligne de status et la variable $i
(le compteur dans la for
boucle), qui indique l’exhaustivité relative de la tâche.
Exemple 2 : Afficher la progression des boucles For imbriquées
$PSStyle.Progress.View = 'Classic'
for($I = 0; $I -lt 10; $I++ ) {
$OuterLoopProgressParameters = @{
Activity = 'Updating'
Status = 'Progress->'
PercentComplete = $I * 10
CurrentOperation = 'OuterLoop'
}
Write-Progress @OuterLoopProgressParameters
for($j = 1; $j -lt 101; $j++ ) {
$InnerLoopProgressParameters = @{
ID = 1
Activity = 'Updating'
Status = 'Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Progress
[oooooooooooooooooo ]
InnerLoop
Cet exemple montre comment définir l’affichage progression sur Classic
, puis afficher la progression de deux boucles imbriquées for
, chacune représentée par une barre de progression.
La Write-Progress
commande de la deuxième barre de progression inclut le paramètre ID qui la distingue de la première barre de progression.
Sans le paramètre ID , les barres de progression seraient superposées les unes aux autres au lieu d’être affichées les unes sous les autres.
Exemple 3 : Afficher la progression lors de la recherche d’une chaîne
# Use Get-WinEvent to get the events in the System log and store them in the $Events variable.
$Events = Get-WinEvent -LogName system
# Pipe the events to the ForEach-Object cmdlet.
$Events | ForEach-Object -Begin {
# In the Begin block, use Clear-Host to clear the screen.
Clear-Host
# Set the $i counter variable to zero.
$i = 0
# Set the $out variable to an empty string.
$out = ""
} -Process {
# In the Process script block search the message property of each incoming object for "bios".
if($_.message -like "*bios*")
{
# Append the matching message to the out variable.
$out=$out + $_.Message
}
# Increment the $i counter variable which is used to create the progress bar.
$i = $i+1
# Determine the completion percentage
$Completed = ($i/$Events.count) * 100
# Use Write-Progress to output a progress bar.
# The Activity and Status parameters create the first and second lines of the progress bar
# heading, respectively.
Write-Progress -Activity "Searching Events" -Status "Progress:" -PercentComplete $Completed
} -End {
# Display the matching messages using the out variable.
$out
}
Cette commande affiche la progression d'une commande qui recherche la chaîne « bios » dans le journal des événements système.
La valeur du paramètre PercentComplete est calculée en divisant le nombre d’événements qui ont été traités $i
par le nombre total d’événements récupérés $Events.count
, puis en multipliant ce résultat par 100.
Exemple 4 : Afficher la progression pour chaque niveau d’un processus imbriqué
$PSStyle.Progress.View = 'Classic'
foreach ( $i in 1..10 ) {
Write-Progress -Id 0 "Step $i"
foreach ( $j in 1..10 ) {
Write-Progress -Id 1 -ParentId 0 "Step $i - Substep $j"
foreach ( $k in 1..10 ) {
Write-Progress -Id 2 -ParentId 1 "Step $i - Substep $j - iteration $k"
Start-Sleep -Milliseconds 150
}
}
}
Step 1
Processing
Step 1 - Substep 2
Processing
Step 1 - Substep 2 - Iteration 3
Processing
Dans cet exemple, vous pouvez utiliser le paramètre ParentId pour avoir mis en retrait la sortie afin d’afficher les relations parent-enfant dans la progression de chaque étape.
Paramètres
-Activity
Spécifie la première ligne de texte dans le titre au-dessus de la barre d'état. Ce texte décrit l'activité dont la progression est montrée.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Completed
Indique si la barre de progression est visible. Si ce paramètre est omis, Write-Progress
affiche les informations de progression.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CurrentOperation
Spécifie la ligne de texte en dessous de la barre de progression. Ce texte décrit l’opération en cours.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Spécifie un ID qui distingue chaque barre de progression des autres. Utilisez ce paramètre quand vous créez plusieurs barres de progression dans une même commande. Si les barres de progression n’ont pas d’ID différents, elles sont superposées au lieu d’être affichées dans une série. Les valeurs négatives ne sont pas autorisées.
Type: | Int32 |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ParentId
Spécifie l’activité parente de l’activité actuelle. Utilisez la valeur -1
si l’activité actuelle n’a aucune activité parente.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PercentComplete
Spécifie le pourcentage de l’activité terminée. Utilisez la valeur -1
si le pourcentage terminé est inconnu ou non applicable.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondsRemaining
Spécifie le nombre de secondes prévues restant avant la fin de l'activité. Utilisez la valeur -1
si le nombre de secondes restantes est inconnu ou non applicable.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceId
Spécifie la source de l’enregistrement. Vous pouvez l’utiliser à la place de l’ID , mais ne peut pas être utilisé avec d’autres paramètres tels que ParentId.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Status
Spécifie la deuxième ligne de texte dans le titre au-dessus de la barre d'état. Ce texte décrit l'état actuel de l'activité.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
None
Vous ne pouvez pas diriger d’objets vers cette applet de commande.
Sorties
None
Cette applet de commande ne retourne pas de sortie.
Notes
Si la barre de progression n’apparaît pas, case activée la valeur de la $ProgressPreference
variable. Si la valeur est définie sur SilentlyContinue
, la barre de progression n’est pas affichée. Pour plus d’informations sur les préférences PowerShell, consultez about_Preference_Variables.
Les paramètres de l’applet de commande correspondent aux propriétés de la classe System.Management.Automation.ProgressRecord . Pour plus d’informations, consultez Classe ProgressRecord.