Set-Content
Escribe contenido nuevo o reemplaza el contenido existente en un archivo.
Sintaxis
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
es un cmdlet de procesamiento de cadenas que escribe contenido nuevo o reemplaza el contenido de un archivo. Set-Content
reemplaza el contenido existente y difiere del Add-Content
cmdlet que anexa contenido a un archivo. Para enviar contenido, Set-Content
puede usar el parámetro Value en la línea de comandos o enviar contenido a través de la canalización.
Si necesita crear archivos o directorios para los ejemplos siguientes, consulte New-Item.
Ejemplos
Ejemplo 1: Reemplazar el contenido de varios archivos en un directorio
En este ejemplo se reemplaza el contenido de varios archivos en el directorio actual.
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
El Get-ChildItem
cmdlet usa el parámetro Path para enumerar .txt archivos que comienzan por Test*
en el directorio actual. El Set-Content
cmdlet usa el parámetro Path para especificar los Test*.txt
archivos. El parámetro Value proporciona la cadena de texto Hello, World que reemplaza el contenido existente en cada archivo. El Get-Content
cmdlet usa el parámetro Path para especificar los Test*.txt
archivos y muestra el contenido de cada archivo en la consola de PowerShell.
Ejemplo 2: Crear un nuevo archivo y escribir contenido
En este ejemplo se crea un nuevo archivo y se escribe la fecha y hora actuales en el archivo.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
usa los parámetros Path y Value para crear un nuevo archivo denominado DateTime.txt en el directorio actual. El parámetro Value usa Get-Date
para obtener la fecha y hora actuales.
Set-Content
escribe el objeto DateTime en el archivo como una cadena. El Get-Content
cmdlet usa el parámetro Path para mostrar el contenido de DateTime.txt en la consola de PowerShell.
Ejemplo 3: Reemplazar texto en un archivo
Este comando reemplaza todas las instancias de word dentro de un archivo existente.
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.
El Get-Content
cmdlet usa el parámetro Path para especificar el archivo Notice.txt en el directorio actual. El Get-Content
comando se ajusta con paréntesis para que el comando finalice antes de enviarse a la canalización.
El contenido del archivo Notice.txt se envía a la canalización al ForEach-Object
cmdlet .
ForEach-Object
usa la variable $_
automática y reemplaza cada aparición de Advertencia con precaución. Los objetos se envían a la canalización al Set-Content
cmdlet . Set-Content
usa el parámetro Path para especificar el archivo Notice.txt y escribe el contenido actualizado en el archivo.
El último Get-Content
cmdlet muestra el contenido del archivo actualizado en la consola de PowerShell.
Ejemplo 4: Usar filtros con set-content
Puede especificar un filtro para el Set-Content
cmdlet . Al usar filtros para calificar el parámetro Path , debe incluir un asterisco final (*
) para indicar el contenido de la ruta de acceso.
El siguiente comando establece el contenido de todos los *.txt
archivos del C:\Temp
directorio en el valor vacío.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parámetros
-AsByteStream
Se trata de un parámetro dinámico que el proveedor FileSystem pone a disposición. Para obtener más información, consulte about_FileSystem_Provider.
Especifica que el contenido se debe escribir como un flujo de bytes. Este parámetro se introdujo en PowerShell 6.0.
Se produce una advertencia cuando se usa el parámetro AsByteStream con el parámetro Encoding . El parámetro AsByteStream omite cualquier codificación y la salida se escribe como una secuencia de bytes.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Credential
Nota:
Este parámetro no es compatible con ningún proveedor instalado con PowerShell. Para suplantar a otro usuario o elevar las credenciales al ejecutar este cmdlet, use Invoke-Command.
Tipo: | PSCredential |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Encoding
Se trata de un parámetro dinámico que el proveedor FileSystem pone a disposición. Para obtener más información, consulte about_FileSystem_Provider.
Especifica el tipo de codificación del archivo de destino. El valor predeterminado es utf8NoBOM
.
La codificación es un parámetro dinámico que el proveedor FileSystem agrega a Set-Content
. Este parámetro solo funciona en las unidades del sistema de archivos.
Los valores aceptables para este parámetro son los siguientes:
ascii
: usa la codificación para el juego de caracteres ASCII (7 bits).ansi
: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en PowerShell 7.4.bigendianunicode
: codifica en formato UTF-16 mediante el orden de bytes big-endian.bigendianutf32
: codifica en formato UTF-32 mediante el orden de bytes big-endian.oem
: usa la codificación predeterminada para los programas de consola y MS-DOS.unicode
: codifica en formato UTF-16 mediante el orden de bytes little-endian.utf7
: codifica en formato UTF-7.utf8
: codifica en formato UTF-8.utf8BOM
: codifica en formato UTF-8 con marca de orden de bytes (BOM)utf8NoBOM
: codifica en formato UTF-8 sin marca de orden de bytes (BOM)utf32
: codifica en formato UTF-32.
A partir de PowerShell 6.2, el parámetro Encoding también permite identificadores numéricos de páginas de códigos registradas (como -Encoding 1251
) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"
). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.
A partir de PowerShell 7.4, puede usar el Ansi
valor del parámetro Encoding para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.
Nota:
Ya no se recomienda usar UTF-7*. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7
para el parámetro Encoding .
Tipo: | Encoding |
Valores aceptados: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Posición: | Named |
Valor predeterminado: | utf8NoBOM |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Exclude
Especifica, como matriz de cadenas, un elemento o elementos que este cmdlet excluye en la operación. El valor de este parámetro califica el parámetro Path . Escriba un elemento o patrón de ruta de acceso, como *.txt
. Se permite el uso de caracteres comodín. El parámetro Exclude solo es efectivo cuando el comando incluye el contenido de un elemento, como C:\Windows\*
, donde el carácter comodín especifica el contenido del C:\Windows
directorio.
Tipo: | String[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-Filter
Especifica un filtro para calificar el parámetro Path . El proveedor FileSystem es el único proveedor de PowerShell instalado que admite el uso de filtros. Puede encontrar la sintaxis del lenguaje de filtro FileSystem en about_Wildcards. Los filtros son más eficaces que otros parámetros, ya que el proveedor los aplica cuando el cmdlet obtiene los objetos en lugar de que PowerShell filtre los objetos una vez recuperados.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-Force
Obliga al cmdlet a establecer el contenido de un archivo, incluso si el archivo es de solo lectura. La implementación varía en función del proveedor. Para obtener más información, consulte about_Providers. El parámetro Force no invalida las restricciones de seguridad.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Include
Especifica, como matriz de cadenas, un elemento o elementos que este cmdlet incluye en la operación. El valor de este parámetro califica el parámetro Path . Escriba un elemento o patrón de ruta de acceso, como "*.txt"
. Se permite el uso de caracteres comodín. El parámetro Include solo es efectivo cuando el comando incluye el contenido de un elemento, como C:\Windows\*
, donde el carácter comodín especifica el contenido del C:\Windows
directorio.
Tipo: | String[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-LiteralPath
Especifica una ruta de acceso a una o varias ubicaciones. El valor de LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Para obtener más información, consulte about_Quoting_Rules.
Tipo: | String[] |
Alias: | PSPath, LP |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-NoNewline
Se trata de un parámetro dinámico que el proveedor FileSystem pone a disposición. Para obtener más información, consulte about_FileSystem_Provider.
Las representaciones de cadena de los objetos de entrada se concatenan para formar la salida. No se insertan espacios ni nuevas líneas entre las cadenas de salida. No se agrega ninguna nueva línea después de la última cadena de salida.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-PassThru
Devuelve un objeto que representa el contenido. De forma predeterminada, este cmdlet no genera ningún resultado.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Especifica la ruta de acceso del elemento que recibe el contenido. Se permite el uso de caracteres comodín.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | True |
-Stream
Se trata de un parámetro dinámico que el proveedor FileSystem pone a disposición. Este parámetro solo está disponible en Windows. Para obtener más información, consulte about_FileSystem_Provider.
Especifica un flujo de datos alternativo para el contenido. Si la secuencia no existe, este cmdlet lo crea. No se admite el uso de caracteres comodín.
Stream es un parámetro dinámico que el proveedor FileSystem agrega a Set-Content
. Este parámetro solo funciona en las unidades del sistema de archivos.
Puede usar el Set-Content
cmdlet para crear o actualizar el contenido de cualquier flujo de datos alternativo, como Zone.Identifier
. Sin embargo, no se recomienda esto como una manera de eliminar las comprobaciones de seguridad que bloquean los archivos que se descargan de Internet. Si comprueba que un archivo descargado es seguro, use el Unblock-File
cmdlet .
Este parámetro se introdujo en PowerShell 3.0. A partir de PowerShell 7.2, Set-Content
puede establecer el contenido de flujos de datos alternativos desde directorios, así como archivos.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Value
Especifica el nuevo contenido del elemento.
Tipo: | Object[] |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar un objeto que contenga el nuevo valor del elemento a este cmdlet.
Salidas
None
De forma predeterminada, este cmdlet no devuelve ninguna salida.
Cuando se usa el parámetro PassThru , este cmdlet devuelve una cadena que representa el contenido.
Notas
Set-Content
está diseñado para el procesamiento de cadenas. Si canaliza objetos que no son de cadena aSet-Content
, convierte el objeto en una cadena antes de escribirlo. Para escribir objetos en archivos, useOut-File
.- El
Set-Content
cmdlet está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para enumerar los proveedores disponibles en la sesión, escribaGet-PsProvider
. Para obtener más información, consulte about_Providers.