Partager via


Get-Content

Obtient le contenu de l’élément à l’emplacement spécifié.

Syntaxe

Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   [-Path] <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]
Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   -LiteralPath <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]

Description

L’applet de commande Get-Content obtient le contenu de l’élément à l’emplacement spécifié par le chemin d’accès, tel que le texte d’un fichier ou le contenu d’une fonction. Pour les fichiers, le contenu est lu une ligne à la fois et retourne une collection d’objets, chacune représentant une ligne de contenu.

À compter de PowerShell 3.0, Get-Content pouvez également obtenir un nombre spécifié de lignes à partir du début ou de la fin d’un élément.

Exemples

Exemple 1 : Obtenir le contenu d’un fichier texte

Cet exemple obtient le contenu d’un fichier dans le répertoire actif. Le fichier LineNumbers.txt comporte 100 lignes au format, Il s’agit de ligne X et est utilisé dans plusieurs exemples.

1..100 | ForEach-Object {
    Add-Content -Path .\LineNumbers.txt -Value "This is line $_."
}
Get-Content -Path .\LineNumbers.txt

This is Line 1
This is Line 2
...
This is line 99.
This is line 100.

Les valeurs de tableau 1 à 100 sont transmises via le pipeline à l’applet de commande ForEach-Object. ForEach-Object utilise un bloc de script avec l’applet de commande Add-Content pour créer le fichier LineNumbers.txt. La variable $_ représente les valeurs de tableau à mesure que chaque objet est envoyé vers le bas du pipeline. L’applet de commande Get-Content utilise le paramètre Path pour spécifier le fichier LineNumbers.txt et afficher le contenu dans la console PowerShell.

Exemple 2 : Limitez le nombre de lignes que Get-Content renvoie

Cette commande obtient les cinq premières lignes d’un fichier. Le paramètre TotalCount obtient les cinq premières lignes de contenu. Cet exemple utilise la LineNumbers.txt référencée dans l’exemple 1.

Get-Content -Path .\LineNumbers.txt -TotalCount 5

This is Line 1
This is Line 2
This is Line 3
This is Line 4
This is Line 5

Exemple 3 : Obtenir une ligne de contenu spécifique à partir d’un fichier texte

Cette commande obtient un nombre spécifique de lignes d’un fichier, puis affiche uniquement la dernière ligne de ce contenu. Le paramètre TotalCount obtient les 25 premières lignes de contenu. Cet exemple utilise le fichier LineNumbers.txt référencé dans l’exemple 1.

(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]

This is Line 25

La commande Get-Content est encapsulée entre parenthèses afin que la commande se termine avant de passer à l’étape suivante. Get-Contentretourne un tableau de lignes, cela vous permet d’ajouter la notation d’index après la parenthèse pour récupérer un numéro de ligne spécifique. Dans ce cas, l’index [-1] spécifie le dernier index dans le tableau retourné de 25 lignes récupérées.

Exemple 4 : Obtenir la dernière ligne d’un fichier texte

Cette commande obtient la dernière ligne de contenu d’un fichier. Cet exemple utilise le fichier LineNumbers.txt créé dans l’exemple 1.

Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1

This is Line 100

Cet exemple utilise l’applet de commande Get-Item pour illustrer que vous pouvez diriger des fichiers vers Get-Content. Le paramètre Tail obtient la dernière ligne du fichier. Cette méthode est plus rapide que la récupération de toutes les lignes d’une variable et l’utilisation de la notation d’index [-1].

Exemple 5 : Obtenir le contenu d’un autre flux de données

Cet exemple décrit comment utiliser le paramètre Stream pour obtenir le contenu d’un autre flux de données pour les fichiers stockés sur un volume NTFS Windows. Dans cet exemple, l’applet de commande Set-Content est utilisée pour créer un exemple de contenu dans un fichier nommé Stream.txt.

Set-Content -Path .\Stream.txt -Value 'This is the content of the Stream.txt file'
# Specify a wildcard to the Stream parameter to display all streams of the recently
# created file.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

# Retrieve the content of the primary stream.
# Note the single quotes to prevent variable substitution.
Get-Content -Path .\Stream.txt -Stream ':$DATA'

This is the content of the Stream.txt file

# Alternative way to get the same content.
Get-Content -Path .\Stream.txt -Stream ""
# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

This is the content of the Stream.txt file

# Use the Stream parameter of Add-Content to create a new Stream containing sample
# content.
$addContentSplat = @{
    Path = '.\Stream.txt'
    Stream = 'NewStream'
    Value = 'Added a stream named NewStream to Stream.txt'
}
Add-Content @addContentSplat

# Use Get-Item to verify the stream was created.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt:NewStream
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt:NewStream
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : NewStream
Length        : 46

# Retrieve the content of your newly created Stream.
Get-Content -Path .\Stream.txt -Stream NewStream

Added a stream named NewStream to Stream.txt

Le paramètre Stream est un paramètre dynamique du fournisseur FileSystem. Par défaut, Get-Content récupère uniquement les données du flux par défaut ou :$DATA. Flux peuvent être utilisés pour stocker des données masquées telles que des attributs, des paramètres de sécurité ou d'autres données. Ils peuvent également être stockés dans des répertoires sans être des éléments enfants.

Exemple 6 : Obtenir du contenu brut

Les commandes de cet exemple obtiennent le contenu d’un fichier sous la forme d’une seule chaîne, au lieu d’un tableau de chaînes. Par défaut, sans le paramètre dynamique Raw, le contenu est retourné sous la forme d’un tableau de chaînes délimitées par de nouvelles lignes. Cet exemple utilise le fichier LineNumbers.txt référencé dans l’exemple 1.

$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count) lines."
Write-Host "Lines contains $($lines.Count) lines."

Raw contains 1 lines.
Lines contains 100 lines.

Exemple 7 : Utiliser des filtres avec Get-Content

Vous pouvez spécifier un filtre dans l’applet de commande Get-Content. Lorsque vous utilisez des filtres pour qualifier le paramètre Path, vous devez inclure un astérisque de fin (*) pour indiquer le contenu du chemin.

La commande suivante obtient le contenu de tous les fichiers *.log dans le répertoire C:\Temp.

Get-Content -Path C:\Temp\* -Filter *.log

Exemple 8 : Obtenir le contenu du fichier en tant que tableau d’octets

Cet exemple montre comment obtenir le contenu d’un fichier en tant que [byte[]] en tant qu’objet unique.

$byteArray = Get-Content -Path C:\temp\test.txt -AsByteStream -Raw
Get-Member -InputObject $byteArray

TypeName: System.Byte[]

Name           MemberType            Definition
----           ----------            ----------
Count          AliasProperty         Count = Length
Add            Method                int IList.Add(System.Object value)

La première commande utilise le paramètre AsByteStream pour obtenir le flux d’octets du fichier. Le paramètre Raw garantit que les octets sont retournés en tant que [System.Byte[]]. Si le paramètre Raw était absent, la valeur de retour est un flux d’octets, interprété par PowerShell comme [System.Object[]].

Paramètres

-AsByteStream

Spécifie que le contenu doit être lu sous la forme d’un flux d’octets. Le paramètre AsByteStream a été introduit dans Windows PowerShell 6.0.

Un avertissement se produit lorsque vous utilisez le paramètre AsByteStream avec le paramètre Encoding. Le paramètre AsByteStream ignore tout encodage et la sortie est retournée en tant que flux d’octets.

Lors de la lecture et de l’écriture dans des fichiers binaires, utilisez le paramètre AsByteStream et la valeur 0 pour le paramètre ReadCount . Une valeur de ReadCount de 0 lit l’intégralité du fichier en une seule opération de lecture. La valeur par défaut ReadCount, 1, lit un octet dans chaque opération de lecture et convertit chaque octet en un objet distinct. La sortie d’un octet unique vers Set-Content provoque des erreurs, sauf si vous utilisez le paramètre AsByteStream avec Set-Content.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Credential

Remarque

Ce paramètre n’est pas pris en charge par les fournisseurs installés avec PowerShell. Pour emprunter l’identité d’un autre utilisateur ou élever vos informations d’identification lors de l’exécution de cette applet de commande, utilisez Invoke-Command.

Type:PSCredential
Position:Named
Valeur par défaut:Current user
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Delimiter

Spécifie le délimiteur que Get-Content utilise pour diviser le fichier en objets pendant qu’il lit. La valeur par défaut est \n, le caractère de fin de ligne. Lors de la lecture d’un fichier texte, Get-Content retourne une collection d’objets de chaîne, chacune se terminant par un caractère de fin de ligne. Lorsque vous entrez un délimiteur qui n’existe pas dans le fichier, Get-Content retourne l’intégralité du fichier en tant qu’objet unique et non délimité.

Vous pouvez utiliser ce paramètre pour fractionner un fichier volumineux en fichiers plus petits en spécifiant un séparateur de fichiers, comme délimiteur. Le délimiteur est conservé (non ignoré) et devient le dernier élément de chaque section de fichier.

Delimiter est un paramètre dynamique que le fournisseur FileSystem ajoute à la cmdlet Get-Content. Ce paramètre fonctionne uniquement dans les lecteurs de système de fichiers.

Remarque

Actuellement, lorsque la valeur du paramètre délimiteur est une chaîne vide, Get-Content ne retourne rien. Il s’agit d’un problème connu. Pour forcer Get-Content à retourner l’intégralité du fichier sous la forme d’une chaîne unique et non délimitée. Entrez une valeur qui n’existe pas dans le fichier.

Type:String
Position:Named
Valeur par défaut:End-of-line character
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Encoding

Spécifie le type d’encodage du fichier cible. La valeur par défaut est utf8NoBOM.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • ascii: utilise l’encodage pour le jeu de caractères ASCII (7 bits).
  • ansi: Utilise l’encodage de la page de codes ANSI de la culture actuelle. Cette option a été ajoutée dans PowerShell 7.4.
  • bigendianunicode: encode au format UTF-16 avec primauté des octets de poids fort.
  • bigendianutf32: encode au format UTF-32 avec primauté des octets de poids fort.
  • oem: utilise l’encodage par défaut pour les programmes MS-DOS et console.
  • unicode: encode au format UTF-16 avec primauté des octets de poids faible.
  • utf7: encode au format UTF-7.
  • utf8: encode au format UTF-8.
  • utf8BOM: encode au format UTF-8 avec un Byte Order Mark (BOM).
  • utf8NoBOM: encode au format UTF-8 sans marque d’ordre d’octet (BOM)
  • utf32: encode au format UTF-32.

L’encodage est un paramètre dynamique que le fournisseur fileSystem ajoute à l’applet de commande Get-Content. Ce paramètre est disponible uniquement dans les lecteurs du système de fichiers.

À compter de PowerShell 6.2, le paramètre d’encodage autorise également des ID numériques de pages de codes inscrites (comme -Encoding 1251) ou des noms de chaînes de pages de codes inscrites (comme -Encoding "windows-1251"). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.

À compter de PowerShell 7.4, vous pouvez utiliser la valeur Ansi pour le paramètre d’encodage afin de transmettre l’ID numérique de la page de codes ANSI de l'actuelle culture sans avoir à le spécifier manuellement.

Remarque

UTF-7* n’est plus recommandé d’utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7 pour le paramètre d’encodage .

Type:Encoding
Valeurs acceptées:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Valeur par défaut:UTF8NoBOM
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Exclude

Spécifie, en tant que tableau de chaînes, un élément ou des éléments que cette applet de commande exclut dans l’opération. La valeur de ce paramètre qualifie le paramètre Path.

Saisissez un élément de chemin ou un modèle, tel que *.txt. Les caractères génériques sont autorisés.

Le paramètre Exclure est efficace uniquement lorsque la commande inclut le contenu d’un élément, tel que C:\Windows\*, où le caractère générique spécifie le contenu du répertoire C:\Windows.

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-Filter

Spécifie un filtre pour qualifier le paramètre Path. Le fournisseur FileSystem est le seul fournisseur PowerShell installé qui prend en charge l’utilisation de filtres. Vous trouverez la syntaxe du langage de filtrage FileSystem dans about_Wildcards. Les filtres sont plus efficaces que d’autres paramètres, car le fournisseur les applique lorsque l’applet de commande obtient les objets plutôt que d’avoir PowerShell filtrer les objets après leur récupération.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-Force

Force peut remplacer un attribut en lecture seule ou créer des répertoires pour compléter un chemin de fichier. Le paramètre Forcer ne tente pas de modifier les autorisations de fichier ni de remplacer les restrictions de sécurité.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Include

Spécifie, sous la forme d’un tableau de chaînes, un élément ou des éléments inclus dans l’opération. La valeur de ce paramètre qualifie le paramètre Path. Saisissez un élément de chemin ou un modèle, tel que "*.txt". Les caractères génériques sont autorisés. Le paramètre Include n’est effectif que lorsque la commande inclut le contenu d’un élément, tel que C:\Windows\*, où le caractère générique spécifie le contenu du répertoire C:\Windows.

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-LiteralPath

Spécifie un chemin d’accès à un ou plusieurs emplacements. La valeur de LiteralPath est utilisée exactement comme elle est typée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.

Pour plus d'informations, voir about_Quoting_Rules.

Type:String[]
Alias:PSPath, LP
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Path

Spécifie le chemin d’accès à un élément où Get-Content obtient le contenu. Les caractères génériques sont autorisés. Les chemins d’accès doivent être des chemins d’accès aux éléments, et non aux conteneurs. Par exemple, vous devez spécifier un chemin d’accès à un ou plusieurs fichiers, et non un chemin d’accès à un répertoire.

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:True

-Raw

Ignore les caractères de retour à la ligne et renvoie l'intégralité du contenu d'un fichier dans une seule chaîne de caractères, les caractères de retour à la ligne étant conservés. Par défaut, les caractères de nouvelle ligne d’un fichier sont utilisés comme délimiteurs pour séparer l’entrée dans un tableau de chaînes. Ce paramètre a été introduit dans PowerShell 3.0.

raw est un paramètre dynamique que le fournisseur FileSystem ajoute à l’applet de commande Get-Content Ce paramètre fonctionne uniquement dans les lecteurs de système de fichiers.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ReadCount

Spécifie le nombre de lignes de contenu envoyées via le pipeline à la fois. La valeur par défaut est 1. Une valeur de 0 (zéro) ou des nombres négatifs envoie tout le contenu à la fois.

Ce paramètre ne modifie pas le contenu affiché, mais il affecte le temps nécessaire à l’affichage du contenu. Lorsque la valeur de ReadCount augmente, le temps nécessaire pour retourner la première ligne augmente, mais le temps total de l’opération diminue. Cela peut faire une différence perceptible dans les éléments volumineux.

Type:Int64
Position:Named
Valeur par défaut:1
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Stream

Remarque

Ce paramètre est disponible uniquement sur Windows.

Obtient le contenu du flux de fichiers NTFS de remplacement spécifié à partir du fichier. Entrez le nom du flux. Les caractères génériques ne sont pas pris en charge.

Stream est un paramètre dynamique que le fournisseur FileSystem ajoute à l’applet de commande Get-Content. Ce paramètre fonctionne uniquement dans les lecteurs de système de fichiers sur les systèmes Windows.

Ce paramètre a été introduit dans Windows PowerShell 3.0. Dans PowerShell 7.2, Get-Content pouvez récupérer le contenu d’autres flux de données à partir de répertoires et de fichiers.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Tail

Spécifie le nombre de lignes de la fin d’un fichier ou d’un autre élément. Vous pouvez utiliser le nom du paramètre Tail ou son alias, Last. Une valeur de 0 ne retourne aucune ligne. Les valeurs négatives provoquent une erreur.

Ce paramètre a été introduit dans PowerShell 3.0.

Type:Int32
Alias:Last
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-TotalCount

Spécifie le nombre de lignes à partir du début d’un fichier ou d’un autre élément. Une valeur de 0 ne retourne aucune ligne. Les valeurs négatives provoquent une erreur.

Vous pouvez utiliser le nom du paramètre TotalCount ou bien ses alias, First ou bien Head.

Type:Int64
Alias:First, Head
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Wait

Provoque un délai d'attente sans limite pour l'applet de commande, en gardant le fichier ouvert, jusqu'à interruption. En attendant, Get-Content vérifie le fichier une fois par seconde et génère de nouvelles lignes s’il est présent. Lorsqu’il est utilisé avec le paramètre TotalCount, Get-Content attend que le nombre de lignes spécifié soit disponible dans le fichier spécifié. Par exemple, si vous spécifiez un TotalCount de 10 et que le fichier comporte déjà 10 lignes ou plus, Get-Content renvoie les 10 lignes et termine. Si le fichier comporte moins de 10 lignes, Get-Content génère chaque ligne à mesure qu’elle arrive, mais attend que la dixième ligne arrive avant de quitter.

Vous pouvez interrompre Wait en appuyant sur Ctrl+C. La suppression du fichier provoque une erreur de non-fin qui interrompt également l’attente.

Wait est un paramètre dynamique que le fournisseur FileSystem ajoute à l’applet de commande Get-Content. Ce paramètre fonctionne uniquement dans les lecteurs de système de fichiers. Wait ne peut pas être combiné avec Raw.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

Int64

Vous pouvez diriger le nombre de lectures ou le nombre total vers cette applet de commande.

String[]

Vous pouvez diriger les chemins vers cette applet de commande.

PSCredential

Vous pouvez diriger les informations d’identification vers cette applet de commande.

Sorties

Byte

Lorsque vous utilisez le paramètre AsByteStream, cette applet de commande retourne le contenu sous forme d’octets.

String

Par défaut, cette applet de commande retourne le contenu sous forme de tableau de chaînes, une par ligne. Lorsque vous utilisez le paramètre Raw, il retourne une chaîne unique contenant chaque ligne du fichier.

Notes

PowerShell inclut les alias suivants pour Get-Content:

  • Toutes les plateformes :
    • gc
    • type
  • Windows:
    • cat

L’applet de commande Get-Content est conçue pour fonctionner avec les données exposées par n’importe quel fournisseur. Pour obtenir les fournisseurs dans votre session, utilisez l’applet de commande Get-PSProvider. Pour plus d’informations, voir about_Providers.