Set-Content
Écrit du nouveau contenu ou remplace le contenu existant dans un fichier.
Syntaxe
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Set-Content
est une applet de commande de traitement de chaîne qui écrit du nouveau contenu ou remplace le contenu dans un fichier. Set-Content
remplace le contenu existant et diffère de l’applet Add-Content
de commande qui ajoute du contenu à un fichier. Pour envoyer du contenu, Set-Content
vous pouvez utiliser le paramètre Value sur la ligne de commande ou envoyer du contenu via le pipeline.
Si vous devez créer des fichiers ou des répertoires pour les exemples suivants, consultez New-Item.
Exemples
Exemple 1 : Remplacer le contenu de plusieurs fichiers dans un répertoire
Cet exemple remplace le contenu de plusieurs fichiers dans le répertoire actif.
Get-ChildItem -Path .\Test*.txt
Test1.txt
Test2.txt
Test3.txt
Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt
Hello, World
Hello, World
Hello, World
L’applet Get-ChildItem
de commande utilise le paramètre Path pour répertorier les fichiers .txt qui commencent Test*
par dans le répertoire actif. L’applet Set-Content
de commande utilise le paramètre Path pour spécifier les Test*.txt
fichiers. Le paramètre Value fournit la chaîne de texte Hello, World qui remplace le contenu existant dans chaque fichier. L’applet Get-Content
de commande utilise le paramètre Path pour spécifier les Test*.txt
fichiers et afficher le contenu de chaque fichier dans la console PowerShell.
Exemple 2 : Créer un fichier et écrire du contenu
Cet exemple crée un fichier et écrit la date et l’heure actuelles dans le fichier.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
utilise les paramètres Path et Value pour créer un fichier nommé DateTime.txt dans le répertoire actif. Le paramètre Value utilise Get-Date
pour obtenir la date et l’heure actuelles.
Set-Content
écrit l’objet DateTime dans le fichier sous forme de chaîne. L’applet Get-Content
de commande utilise le paramètre Path pour afficher le contenu de DateTime.txt dans la console PowerShell.
Exemple 3 : Remplacer du texte dans un fichier
Cette commande remplace toutes les instances de mot dans un fichier existant.
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
L’applet Get-Content
de commande utilise le paramètre Path pour spécifier le fichier Notice.txt dans le répertoire actif. La Get-Content
commande est encapsulée entre parenthèses afin que la commande se termine avant d’être envoyée au pipeline.
Le contenu du fichier Notice.txt est envoyé vers le bas du pipeline à l’applet ForEach-Object
de commande.
ForEach-Object
utilise la variable $_
automatique et remplace chaque occurrence d’Avertissement par Attention. Les objets sont envoyés au pipeline vers l’applet Set-Content
de commande. Set-Content
utilise le paramètre Path pour spécifier le fichier Notice.txt et écrit le contenu mis à jour dans le fichier.
La dernière Get-Content
applet de commande affiche le contenu de fichier mis à jour dans la console PowerShell.
Exemple 4 : Utiliser des filtres avec Set-Content
Vous pouvez spécifier un filtre à l’applet Set-Content
de commande. 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 définit le contenu de tous les *.txt
fichiers du C:\Temp
répertoire sur la valeur vide.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Paramètres
-AsByteStream
Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem . Pour plus d’informations, consultez about_FileSystem_Provider.
Spécifie que le contenu doit être écrit en tant que flux d’octets. Ce paramètre a été introduit dans 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 écrite en tant que flux d’octets.
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 |
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Alias: | cf |
Position: | Named |
Valeur par défaut: | False |
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: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-Encoding
Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem . Pour plus d’informations, consultez about_FileSystem_Provider.
Spécifie le type de codage du fichier cible. La valeur par défaut est utf8NoBOM
.
L’encodage est un paramètre dynamique que le fournisseur FileSystem ajoute à Set-Content
. Ce paramètre fonctionne uniquement dans les lecteurs du système de fichiers.
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 pour 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 à l’aide de l’ordre d’octet big-endian.bigendianutf32
: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.oem
: utilise l’encodage par défaut pour les programmes MS-DOS et console.unicode
: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.utf7
: encode au format UTF-7.utf8
: encode au format UTF-8.utf8BOM
: encode au format UTF-8 avec marque d’ordre d’octet (BOM)utf8NoBOM
: encode au format UTF-8 sans marque d’ordre d’octet (BOM)utf32
: encode au format UTF-32.
À compter de PowerShell 6.2, le paramètre d’encodage autorise également les ID numériques des pages de codes inscrites (par -Encoding 1251
exemple) ou des noms de chaînes de pages de codes inscrites (par exemple -Encoding "windows-1251"
). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.
À compter de PowerShell 7.4, vous pouvez utiliser la Ansi
valeur du paramètre Encodage pour passer l’ID numérique de la page de codes ANSI de la culture actuelle sans avoir à le spécifier manuellement.
Remarque
UTF-7* n’est plus recommandé à utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7
le paramètre 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 . Entrez un élément ou un modèle de chemin d’accès, tel que *.txt
. Les caractères génériques sont autorisés. Le paramètre Exclude est effectif uniquement lorsque la commande inclut le contenu d’un élément, par C:\Windows\*
exemple, où le caractère générique spécifie le contenu du C:\Windows
répertoire.
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 filtre 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 de 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 l’applet de commande à définir le contenu d’un fichier, même si le fichier est en lecture seule. L'implémentation est différente d'un fournisseur à l'autre. Pour plus d’informations, consultez about_Providers. Le paramètre Force ne remplace pas les restrictions de sécurité.
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 |
-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 . Entrez un élément ou un modèle de chemin d’accès, tel que "*.txt"
. Les caractères génériques sont autorisés. Le paramètre Include est efficace uniquement lorsque la commande inclut le contenu d’un élément, par C:\Windows\*
exemple, où le caractère générique spécifie le contenu du C:\Windows
répertoire.
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, consultez 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 |
-NoNewline
Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem . Pour plus d’informations, consultez about_FileSystem_Provider.
Les représentations sous forme de chaîne des objets d’entrée sont concaténées pour former la sortie. Aucun espace ou nouvelle ligne n’est inséré entre les chaînes de sortie. Aucune nouvelle ligne n’est ajoutée après la dernière chaîne de sortie.
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 |
-PassThru
Retourne un objet qui représente le contenu. Par défaut, cette applet de commande ne génère aucun résultat.
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 |
-Path
Spécifie le chemin d’accès de l’élément qui reçoit le contenu. Les caractères génériques sont autorisés.
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 |
-Stream
Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem . Ce paramètre est disponible uniquement sur Windows. Pour plus d’informations, consultez about_FileSystem_Provider.
Spécifie un autre flux de données pour le contenu. Si le flux n’existe pas, cette applet de commande la crée. Les caractères génériques ne sont pas pris en charge.
Stream est un paramètre dynamique auquel le fournisseur FileSystem ajoute Set-Content
. Ce paramètre fonctionne uniquement dans les lecteurs du système de fichiers.
Vous pouvez utiliser l’applet Set-Content
de commande pour créer ou mettre à jour le contenu d’un autre flux de données, tel que Zone.Identifier
. Toutefois, nous vous déconseillons de procéder comme moyen d’éliminer les contrôles de sécurité qui bloquent les fichiers téléchargés à partir d’Internet. Si vous vérifiez qu’un fichier téléchargé est sécurisé, utilisez l’applet de Unblock-File
commande.
Ce paramètre a été introduit dans PowerShell 3.0. À partir de PowerShell 7.2, Set-Content
vous pouvez définir le contenu de flux de données alternatifs à 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 |
-Value
Spécifie le nouveau contenu pour l'élément.
Type: | Object[] |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-WhatIf
Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Alias: | wi |
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
Vous pouvez diriger un objet qui contient la nouvelle valeur de l’élément vers cette applet de commande.
Sorties
None
Par défaut, cette applet de commande ne retourne aucune sortie.
Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne une chaîne représentant le contenu.
Notes
Set-Content
est conçu pour le traitement de chaînes. Si vous dirigez des objetsSet-Content
autres que des chaînes, il convertit l’objet en chaîne avant de l’écrire. Pour écrire des objets dans des fichiers, utilisezOut-File
.- L’applet
Set-Content
de commande est conçue pour fonctionner avec les données exposées par n’importe quel fournisseur. Pour répertorier les fournisseurs disponibles dans votre session, tapezGet-PsProvider
. Pour plus d’informations, consultez about_Providers.