Write-Progress
Affiche une barre de progression dans une fenêtre Commande PowerShell.
Syntaxe
Default (Par défaut)
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 l’état d’une commande ou d’un script en cours d’exécution. Vous pouvez sélectionner les indicateurs que la barre reflète et le texte qui apparaît au-dessus et au-dessous de la barre de progression.
PowerShell 7.2 a ajouté la $PSStyle variable automatique utilisée pour contrôler la 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 valeursMinimaletClassic.Classicest le rendu existant sans aucune modification.Minimalest un rendu minimal à ligne unique.Minimalest la valeur par défaut.
Pour plus d’informations sur $PSStyle, consultez about_ANSI_Terminals.md.
Remarque
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 entre 1 et 100.
L’applet Write-Progress de commande inclut un en-tête Activityde barre d’état, une ligne d’état 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 = 'Inner Progress'
PercentComplete = $j
CurrentOperation = 'InnerLoop'
}
Write-Progress @InnerLoopProgressParameters
Start-Sleep -Milliseconds 25
}
}
Updating
Progress ->
[ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo]
OuterLoop
Updating
Inner Progress
[oooooooooooooooooo ]
InnerLoop
Cet exemple montre comment définir l’affichage Classic de progression, puis afficher la progression de deux boucles imbriquées for , chacune représentée par une barre de progression.
La commande Write-Progress de la deuxième barre de progression inclut le paramètre ID qui le distingue de la première barre de progression.
Sans le paramètre ID, les barres de progression sont superposées les unes sur les autres au lieu d’être affichées l’une en dessous de l’autre.
Remarque
Cet exemple montre comment définir l’affichage Classicde progression sur , qui affiche les valeurs CurrentOperation pour chaque barre de progression. Lorsque l’affichage de progression est défini Minimalsur , les valeurs CurrentOperation ne sont pas affichées.
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 pour rechercher la chaîne « bios » dans le journal des événements système.
La valeur du paramètre PercentComplete
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 une sortie mise en retrait pour 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 signalée.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 0 |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Completed
Indique si la barre de progression est visible. Si ce paramètre est omis, Write-Progress affiche des informations de progression.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-CurrentOperation
Spécifie la ligne de texte sous la barre de progression dans l’affichage Classic de progression. Ce texte décrit l’opération en cours. Ce paramètre n’a aucun effet lorsque l’affichage de progression est défini sur Minimal.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Id
Spécifie un ID qui distingue chaque barre de progression des autres. Utilisez ce paramètre lorsque vous créez plusieurs barres de progression dans une seule 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.
Propriétés du paramètre
| Type: | Int32 |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 2 |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-ParentId
Spécifie l’activité parente de l’activité actuelle. Utilisez la valeur -1 si l’activité actuelle n’a aucune activité parente.
Propriétés du paramètre
| Type: | Int32 |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-PercentComplete
Spécifie le pourcentage de l’activité terminée. Utilisez la valeur -1 si le pourcentage terminé est inconnu ou non applicable.
Propriétés du paramètre
| Type: | Int32 |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-SecondsRemaining
Spécifie le nombre projeté de secondes restant jusqu’à ce que l’activité soit terminée. Utilisez la valeur -1 si le nombre de secondes restant est inconnu ou non applicable.
Propriétés du paramètre
| Type: | Int32 |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-SourceId
Spécifie la source de l’enregistrement. Vous pouvez l’utiliser à la place de l’ID, mais vous ne pouvez pas l’utiliser avec d’autres paramètres tels que ParentId.
Propriétés du paramètre
| Type: | Int32 |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | 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é.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 1 |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
None
Vous ne pouvez pas diriger les objets vers cette applet de commande.
Sorties
None
Cette applet de commande ne retourne aucune sortie.
Notes
Si la barre de progression n’apparaît pas, vérifiez la valeur de la $ProgressPreference variable. Si la valeur est définie SilentlyContinuesur , 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 La classe ProgressRecord.