Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Télécharger Microsoft Edge
Plus d’informations sur Internet Explorer et Microsoft Edge
Description courte
Explique comment rediriger la sortie de PowerShell vers des fichiers texte.
Description longue
Par défaut, PowerShell envoie la sortie à l’hôte PowerShell. Il s’agit généralement de l’application console. Toutefois, vous pouvez rediriger la sortie vers un fichier texte et vous pouvez rediriger la sortie d’erreur vers le flux de sortie normal.
Vous pouvez utiliser les méthodes suivantes pour rediriger la sortie :
Utilisez l’applet de
Out-File
commande, qui envoie la sortie de commande à un fichier texte.
En règle générale, vous utilisez l’applet
Out-File
de commande lorsque vous devez utiliser ses paramètres, tels que les
Encoding
paramètres ,
Force
,
Width
ou
NoClobber
.
Utilisez l’applet
Tee-Object
de commande, qui envoie la sortie de commande à un fichier texte, puis l’envoie au pipeline.
Utilisez les opérateurs de redirection PowerShell. L’utilisation de l’opérateur de redirection avec une cible de fichier équivaut fonctionnellement à la canalisation vers
Out-File
sans paramètre supplémentaire.
Pour plus d’informations sur les flux, consultez
about_Output_Streams
.
Flux de sortie redirigeables
PowerShell prend en charge la redirection des flux de sortie suivants.
Flux #
Description
Introduite dans
Écriture de l’applet de commande
Il existe également un flux
De progression
dans PowerShell, mais il ne prend pas en charge la redirection.
Important
Les flux
Réussite
et
Erreur
sont similaires aux flux stdout et stderr des autres shells. Toutefois, stdin n’est pas connecté au pipeline PowerShell pour l’entrée.
Opérateurs de redirection PowerShell
Les opérateurs de redirection PowerShell sont les suivants, où
n
représente le numéro de flux. Le flux
de réussite
(
1
) est la valeur par défaut si aucun flux n’est spécifié.
Opérateur
Description
Syntaxe
Notes
Contrairement à certains interpréteurs de commandes Unix, vous pouvez uniquement rediriger d’autres flux vers le flux
Réussite
.
Exemples
Exemple 1 : Rediriger les erreurs et la sortie vers un fichier
Cet exemple s’exécute
dir
sur un élément qui réussit et un autre qui va faire l’erreur.
dir 'C:\', 'fakepath' 2>&1 > .\dir.log
Il permet 2>&1
de rediriger le flux d’erreurs vers le flux Réussite et >
d’envoyer le flux réussite résultant à un fichier appelé dir.log
Exemple 2 : Envoyer toutes les données du flux de réussite à un fichier
Cet exemple envoie toutes les données du flux de réussite à un fichier appelé script.log
.
.\script.ps1 > script.log
Exemple 3 : Envoyer des flux de réussite, d’avertissement et d’erreur à un fichier
Cet exemple montre comment combiner des opérateurs de redirection pour obtenir le résultat souhaité.
Write-Warning "hello"
Write-Error "hello"
Write-Output "hi"
} 3>&1 2>&1 > C:\Temp\redirection.log
3>&1
redirige le flux d’avertissement vers le flux De réussite .
2>&1
redirige le flux d’erreurs vers le flux de réussite (qui inclut également désormais toutes les données du flux d’avertissement )
>
redirige le flux de réussite (qui contient désormais à la fois les flux d’avertissement et d’erreur ) vers un fichier appelé C:\temp\redirection.log
)
Exemple 4 : Rediriger tous les flux vers un fichier
Cet exemple envoie tous les flux de sortie d’un script appelé script.ps1
à un fichier appelé script.log
.\script.ps1 *> script.log
Cet exemple supprime toutes les données de flux d’informations. Pour en savoir plus sur les applets de commande de flux d’informations , consultez Write-Host et Write-Information
Write-Host "Hello"
Write-Information "Hello" -InformationAction Continue
} 6> $null
Exemple 6 : Afficher l’effet des préférences d’action
Les variables et paramètres de préférence d’action peuvent modifier ce qui est écrit dans un flux particulier. Le script de cet exemple montre comment la valeur de $ErrorActionPreference
affecte ce qui est écrit dans le flux d’erreurs .
$ErrorActionPreference = 'Continue'
$ErrorActionPreference > log.txt
get-item /not-here 2>&1 >> log.txt
$ErrorActionPreference = 'SilentlyContinue'
$ErrorActionPreference >> log.txt
get-item /not-here 2>&1 >> log.txt
$ErrorActionPreference = 'Stop'
$ErrorActionPreference >> log.txt
Try {
get-item /not-here 2>&1 >> log.txt
catch {
"`tError caught!" >> log.txt
$ErrorActionPreference = 'Ignore'
$ErrorActionPreference >> log.txt
get-item /not-here 2>&1 >> log.txt
$ErrorActionPreference = 'Inquire'
$ErrorActionPreference >> log.txt
get-item /not-here 2>&1 >> log.txt
$ErrorActionPreference = 'Continue'
Lorsque nous exécutons ce script, nous recevons une invite lorsque $ErrorActionPreference
est défini sur Inquire
.
PS C:\temp> .\test.ps1
Confirm
Cannot find path 'C:\not-here' because it does not exist.
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): H
Get-Item: C:\temp\test.ps1:23
Line |
23 | get-item /not-here 2>&1 >> log.txt
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The running command stopped because the user selected the Stop option.
Lorsque nous examinons le fichier journal, nous voyons les éléments suivants :
PS C:\temp> Get-Content .\log.txt
Continue
Get-Item: C:\temp\test.ps1:3
Line |
3 | get-item /not-here 2>&1 >> log.txt
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot find path 'C:\not-here' because it does not exist.
SilentlyContinue
Error caught!
Ignore
Inquire
Notes
Les opérateurs de redirection qui n’ajoutent pas de données (>
et n>
) remplacent le contenu actuel du fichier spécifié sans avertissement.
Toutefois, si le fichier est un fichier en lecture seule, masqué ou système, la redirection échoue. Les opérateurs de redirection append (>>
et n>>
) n’écrivent pas dans un fichier en lecture seule, mais ils ajoutent du contenu à un fichier système ou masqué.
Pour forcer la redirection du contenu vers un fichier en lecture seule, masqué ou système, utilisez l’applet de Out-File
commande avec son Force
paramètre.
Lorsque vous écrivez dans des fichiers, les opérateurs de redirection utilisent UTF8NoBOM
l’encodage. Si le fichier a un encodage différent, la sortie peut ne pas être mise en forme correctement. Pour écrire dans des fichiers avec un autre encodage, utilisez l’applet de Out-File
commande avec son Encoding
paramètre.
Largeur de la sortie lors de l’écriture dans un fichier
Lorsque vous écrivez dans un fichier à l’aide Out-File
de l’un ou des opérateurs de redirection, PowerShell met en forme la sortie de table dans le fichier en fonction de la largeur de la console dans laquelle il s’exécute. Par exemple, lorsque vous journalisez une sortie de table dans un fichier à l’aide d’une commande telle que Get-ChildItem Env:\Path > path.log
sur un système où la largeur de la console est définie sur 80 colonnes, la sortie dans le fichier est tronquée à 80 caractères :
Name Value
---- -----
Path C:\Program Files\PowerShell\7;C:\WINDOWS…
Étant donné que la largeur de la console peut être définie arbitrairement sur les systèmes sur lesquels votre script est exécuté, vous pouvez préférer que la table au format PowerShell génère des fichiers en fonction d’une largeur que vous spécifiez à la place.
L’applet Out-File
de commande fournit un paramètre Width qui vous permet de définir la largeur souhaitée pour la sortie de table. Au lieu d’avoir à ajouter -Width 2000
partout où vous appelez Out-File
, vous pouvez utiliser la $PSDefaultParameterValues
variable pour définir cette valeur pour toutes les utilisations de l’applet Out-File
de commande dans un script. Et étant donné que les opérateurs de redirection (>
et >>
) sont en fait des alias pour Out-File
, la définition du Out-File:Width
paramètre pour l’ensemble du script a également un impact sur la largeur de mise en forme des opérateurs de redirection. Placez la commande suivante en haut de votre script à définir Out-File:Width
pour l’ensemble du script :
$PSDefaultParameterValues['out-file:width'] = 2000
L’augmentation de la largeur de sortie augmente la consommation de mémoire lors de la journalisation de la sortie mise en forme de table. Si vous journaliser un grand nombre de données tabulaires dans un fichier et que vous savez que vous pouvez vous en sortir avec une largeur plus petite, utilisez la plus petite largeur.
Dans certains cas, comme Get-Service
la sortie, pour utiliser la largeur supplémentaire, vous devez diriger la sortie Format-Table -AutoSize
avant de la sortir dans le fichier.
$PSDefaultParameterValues['out-file:width'] = 2000
Get-Service | Format-Table -AutoSize > services.log
Pour plus d’informations sur $PSDefaultParameterValues
, consultez about_Preference_Variables.
Confusion potentielle avec les opérateurs de comparaison
L’opérateur >
ne doit pas être confondu avec l’opérateur de comparaison Supérieur à (souvent indiqué comme >
dans d’autres langages de programmation).
Selon les objets comparés, la sortie utilisée >
peut sembler correcte (car 36 n’est pas supérieure à 42).
PS> if (36 > 42) { "true" } else { "false" }
false
Toutefois, une vérification du système de fichiers local peut voir qu’un fichier appelé 42
a été écrit, avec le contenu 36
.
PS> dir
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 1/02/20 10:10 am 3 42
PS> cat 42
La tentative d’utilisation de la comparaison <
inverse (inférieure à), génère une erreur système :
PS> if (36 < 42) { "true" } else { "false" }
ParserError:
Line |
1 | if (36 < 42) { "true" } else { "false" }
| ~
| The '<' operator is reserved for future use.
Si la comparaison numérique est l’opération requise, -lt
et -gt
doit être utilisée. Pour plus d’informations, consultez l’opérateur -gt
dans about_Comparison_Operators.
Voir aussi
about_Command_Syntax
about_Operators
about_Output_Streams
about_Path_Syntax
Out-File
Tee-Object
Write-Debug
Write-Error
Write-Host
Write-Information
Write-Output
Write-Progress
Write-Verbose
Write-Warning