Leer en inglés

Compartir a través de


Get-Content

Obtiene el contenido del elemento en la ubicación especificada.

Sintaxis

PowerShell
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>]
PowerShell
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

El cmdlet Get-Content obtiene el contenido del elemento en la ubicación especificada por la ruta de acceso, como el texto de un archivo o el contenido de una función. En el caso de los archivos, el contenido se lee una línea a la vez y devuelve una colección de objetos, cada uno de los cuales representa una línea de contenido.

A partir de PowerShell 3.0, Get-Content también puede obtener un número especificado de líneas desde el principio o el final de un elemento.

Ejemplos

Ejemplo 1: Obtener el contenido de un archivo de texto

En este ejemplo se obtiene el contenido de un archivo en el directorio actual. El archivo LineNumbers.txt tiene 100 líneas en el formato, Esta es la línea X y se usa en varios ejemplos.

PowerShell
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.

Los valores de matriz 1-100 se envían por la canalización al cmdlet ForEach-Object. ForEach-Object usa un bloque de script con el cmdlet Add-Content para crear el archivo LineNumbers.txt. La variable $_ representa los valores de matriz a medida que se envía cada objeto a la canalización. El cmdlet Get-Content usa el parámetro path para especificar el archivo LineNumbers.txt y muestra el contenido en la consola de PowerShell.

Ejemplo 2: Limitar el número de líneas Get-Content devuelve

Este comando obtiene las cinco primeras líneas de un archivo. El parámetro TotalCount obtiene las cinco primeras líneas de contenido. En este ejemplo se usa el LineNumbers.txt al que se hace referencia en el ejemplo 1.

PowerShell
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

Ejemplo 3: Obtener una línea de contenido específica de un archivo de texto

Este comando obtiene un número específico de líneas de un archivo y, a continuación, muestra solo la última línea de ese contenido. El parámetro TotalCount obtiene las primeras 25 líneas de contenido. En este ejemplo se usa el archivo LineNumbers.txt al que se hace referencia en el ejemplo 1.

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

This is Line 25

El comando Get-Content se ajusta entre paréntesis para que el comando se complete antes de ir al paso siguiente. Get-Contentdevuelve una matriz de líneas, lo que permite agregar la notación de índice después del paréntesis para recuperar un número de línea específico. En este caso, el índice [-1] especifica el último índice de la matriz devuelta de 25 líneas recuperadas.

Ejemplo 4: Obtener la última línea de un archivo de texto

Este comando obtiene la última línea de contenido de un archivo. En este ejemplo se usa el archivo LineNumbers.txt que se creó en el ejemplo 1.

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

This is Line 100

En este ejemplo se usa el cmdlet Get-Item para demostrar que puede canalizar archivos a Get-Content. El parámetro Tail obtiene la última línea del archivo. Este método es más rápido que recuperar todas las líneas de una variable y usar la notación de índice [-1].

Ejemplo 5: Obtener el contenido de un flujo de datos alternativo

En este ejemplo se describe cómo usar el parámetro Stream para obtener el contenido de un flujo de datos alternativo para los archivos almacenados en un volumen NTFS de Windows. En este ejemplo, el cmdlet Set-Content se usa para crear contenido de ejemplo en un archivo denominado Stream.txt.

PowerShell
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

El parámetro stream de es un parámetro dinámico del proveedor fileSystem de . De forma predeterminada, Get-Content solo recupera datos de la secuencia predeterminada o :$DATA. secuencias se pueden usar para almacenar datos ocultos, como atributos, configuración de seguridad u otros datos. También se pueden almacenar en directorios sin ser elementos secundarios.

Ejemplo 6: Obtener contenido sin procesar

Los comandos de este ejemplo obtienen el contenido de un archivo como una cadena, en lugar de una matriz de cadenas. De forma predeterminada, sin el parámetro dinámico raw, el contenido se devuelve como una matriz de cadenas delimitadas por líneas nuevas. En este ejemplo se usa el archivo LineNumbers.txt al que se hace referencia en el ejemplo 1.

PowerShell
$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.

Ejemplo 7: Usar filtros con Get-Content

Puede especificar un filtro para el cmdlet Get-Content. Al usar filtros para calificar el parámetro Path de, debe incluir un asterisco final (*) para indicar el contenido de la ruta de acceso.

El comando siguiente obtiene el contenido de todos los archivos *.log del directorio C:\Temp.

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

Ejemplo 8: Obtener el contenido del archivo como una matriz de bytes

En este ejemplo se muestra cómo obtener el contenido de un archivo como un [byte[]] como un único objeto.

PowerShell
$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)

El primer comando usa el parámetro AsByteStream para obtener el flujo de bytes del archivo. El parámetro Raw garantiza que los bytes se devuelven como un [System.Byte[]]. Si el parámetro Raw estaba ausente, el valor devuelto es una secuencia de bytes, que PowerShell interpreta como [System.Object[]].

Parámetros

-AsByteStream

Especifica que el contenido debe leerse como una secuencia de bytes. El parámetro AsByteStream se introdujo en Windows PowerShell 6.0.

Se produce una advertencia cuando se usa el parámetro de AsByteStream con el parámetro Codificación. El parámetro AsByteStream omite cualquier codificación y la salida se devuelve como una secuencia de bytes.

Al leer y escribir en archivos binarios, use el parámetro AsByteStream y un valor de 0 para el parámetro ReadCount. Un ReadCount valor de 0 lee todo el archivo en una sola operación de lectura. El valor predeterminado ReadCount, 1, lee un byte en cada operación de lectura y convierte cada byte en un objeto independiente. La canalización de la salida de un solo byte a Set-Content produce errores a menos que use el parámetro AsByteStream con Set-Content.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
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:Current user
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Delimiter

Especifica el delimitador que Get-Content usa para dividir el archivo en objetos mientras lee. El valor predeterminado es \n, el carácter de final de línea. Al leer un archivo de texto, Get-Content devuelve una colección de objetos de cadena, cada uno de los cuales termina con un carácter de fin de línea. Al escribir un delimitador que no existe en el archivo, Get-Content devuelve todo el archivo como un único objeto sin delimitar.

Puede usar este parámetro para dividir un archivo grande en archivos más pequeños especificando un separador de archivos, como delimitador. El delimitador se conserva (no se descarta) y se convierte en el último elemento de cada sección de archivo.

delimitador es un parámetro dinámico que el proveedor de FileSystem de agrega al cmdlet Get-Content. Este parámetro solo funciona en unidades del sistema de archivos.

Nota

Actualmente, cuando el valor del parámetro de delimitador de es una cadena vacía, Get-Content no devuelve nada. Se trata de un problema conocido. Para forzar Get-Content devolver todo el archivo como una sola cadena sinlimitar. Escriba un valor que no exista en el archivo.

Tipo:String
Posición:Named
Valor predeterminado:End-of-line character
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Encoding

Especifica el tipo de codificación para el archivo de destino. El valor predeterminado es utf8NoBOM.

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 MS-DOS y programas de consola.
  • 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.

La codificación es un parámetro dinámico que el proveedor de FileSystem de agrega al cmdlet Get-Content. Este parámetro solo está disponible en unidades del sistema de archivos.

A partir de PowerShell 6.2, el parámetro Codificación 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 valor de Ansi para el parámetro Codificación 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

UTF-7* ya no se recomienda usar. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7 para el parámetro Codificación.

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 permiten 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 directorio C:\Windows.

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 de FileSystem es el único proveedor de PowerShell instalado que admite el uso de filtros. Puede encontrar la sintaxis del lenguaje de filtro de 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 después de recuperarlos.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:True

-Force

Force puede invalidar un atributo de solo lectura o crear directorios para completar una ruta de acceso de archivo. El parámetro Force no intenta cambiar los permisos de archivo ni invalidar las restricciones de seguridad.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
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 permiten 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 directorio C:\Windows.

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. No se interpreta ningún carácter como caracteres comodín. Si la ruta de acceso incluye caracteres de escape, escríbala 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, vea 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

-Path

Especifica la ruta de acceso a un elemento donde Get-Content obtiene el contenido. Se permiten caracteres comodín. Las rutas de acceso deben ser rutas de acceso a elementos, no a contenedores. Por ejemplo, debe especificar una ruta de acceso a uno o varios archivos, no una ruta de acceso a un directorio.

Tipo:String[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:True

-Raw

Omite los caracteres de nueva línea y devuelve todo el contenido de un archivo en una cadena con las nuevas líneas conservadas. De forma predeterminada, los caracteres de nueva línea de un archivo se usan como delimitadores para separar la entrada en una matriz de cadenas. Este parámetro se introdujo en PowerShell 3.0.

raw es un parámetro dinámico que el proveedor de FileSystem de agrega al cmdlet Get-Content Este parámetro solo funciona en unidades del sistema de archivos.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ReadCount

Especifica cuántas líneas de contenido se envían a través de la canalización a la vez. El valor predeterminado es 1. Un valor de 0 (cero) o números negativos envía todo el contenido a la vez.

Este parámetro no cambia el contenido mostrado, pero afecta al tiempo necesario para mostrar el contenido. A medida que aumenta el valor de ReadCount, aumenta el tiempo necesario para devolver la primera línea, pero el tiempo total de la operación disminuye. Esto puede hacer una diferencia perceptible en elementos grandes.

Tipo:Int64
Posición:Named
Valor predeterminado:1
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Stream

Nota

Este parámetro solo está disponible en Windows.

Obtiene el contenido de la secuencia de archivos NTFS alternativa especificada del archivo. Escriba el nombre de la secuencia. No se admiten caracteres comodín.

Stream es un parámetro dinámico que el proveedor de FileSystem agrega al cmdlet Get-Content. Este parámetro solo funciona en unidades del sistema de archivos en sistemas Windows.

Este parámetro se introdujo en Windows PowerShell 3.0. En PowerShell 7.2, Get-Content puede recuperar el contenido de flujos de datos alternativos de directorios y archivos.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Tail

Especifica el número de líneas del final de un archivo u otro elemento. Puede usar el nombre del parámetro tail o su alias, Last. Un valor de 0 no devuelve ninguna línea. Los valores negativos provocan un error.

Este parámetro se introdujo en PowerShell 3.0.

Tipo:Int32
Alias:Last
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-TotalCount

Especifica el número de líneas desde el principio de un archivo u otro elemento. Un valor de 0 no devuelve ninguna línea. Los valores negativos provocan un error.

Puede usar el nombre del parámetro TotalCount o sus alias, First o Head.

Tipo:Int64
Alias:First, Head
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Wait

Hace que el cmdlet espere indefinidamente, manteniendo el archivo abierto hasta que se interrumpa. Mientras espera, Get-Content comprueba el archivo una vez por segundo y genera nuevas líneas si están presentes. Cuando se usa con el parámetro TotalCount, Get-Content espera hasta que el número especificado de líneas esté disponible en el archivo especificado. Por ejemplo, si especifica un TotalCount de 10 y el archivo ya tiene 10 o más líneas, Get-Content devuelve las 10 líneas y salidas. Si el archivo tiene menos de 10 líneas, Get-Content genera cada línea a medida que llega, pero espera hasta que llegue la décima línea antes de salir.

Puede interrumpir esperar presionando Ctrl+C. Al eliminar el archivo, se produce un error de no terminación que también interrumpe la espera.

Wait es un parámetro dinámico que el proveedor FileSystem agrega al cmdlet Get-Content. Este parámetro solo funciona en unidades del sistema de archivos. de espera no se puede combinar con raw.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

Int64

Puede canalizar el recuento de lectura o el recuento total a este cmdlet.

String[]

Puede canalizar rutas de acceso a este cmdlet.

PSCredential

Puede canalizar las credenciales a este cmdlet.

Salidas

Byte

Cuando se usa el parámetro asByteStream, este cmdlet devuelve el contenido como bytes.

String

De forma predeterminada, este cmdlet devuelve el contenido como una matriz de cadenas, una por línea. Cuando se usa el parámetro raw, devuelve una sola cadena que contiene todas las líneas del archivo.

Notas

PowerShell incluye los siguientes alias para Get-Content:

  • Todas las plataformas:
    • gc
    • type
  • Windows:
    • cat

El cmdlet Get-Content está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para obtener los proveedores de la sesión, use el cmdlet Get-PSProvider. Para obtener más información, vea about_Providers.