Get-Content

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

Syntax

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

El Get-Content cmdlet 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 LineNumbers.txt archivo tiene 100 líneas en el formato , Esta es la línea X y se usa en varios ejemplos.

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 a la canalización al ForEach-Object cmdlet . ForEach-Object usa un bloque de script con el Add-Content cmdlet para crear el LineNumbers.txt archivo. La variable $_ representa los valores de matriz a medida que cada objeto se envía a la canalización. El Get-Content cmdlet usa el parámetro Path para especificar el LineNumbers.txt archivo y muestra el contenido en la consola de PowerShell.

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

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.

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 al que se hace referencia en el LineNumbers.txt ejemplo 1.

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

This is Line 25

El Get-Content comando 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 [-1] índice 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 LineNumbers.txt archivo que se creó en el ejemplo 1.

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

This is Line 100

En este ejemplo se usa el Get-Item cmdlet 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 [-1] índice.

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 Set-Content cmdlet se usa para crear contenido de ejemplo en un archivo denominado 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

El parámetro Stream es un parámetro dinámico del proveedor FileSystem. De forma predeterminada Get-Content , solo recupera datos del valor predeterminado o :$DATA de la secuencia. 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 al que se hace referencia en el LineNumbers.txt ejemplo 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.

Ejemplo 7: Usar filtros con Get-Content

Puede especificar un filtro para el Get-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 obtiene el contenido de todos los *.log archivos del C:\Temp directorio.

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[]] solo objeto.

$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 .[System.Byte[]] Si el parámetro Raw no estaba presente, 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 AsByteStream con el parámetro Encoding . 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 valor ReadCount 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 provoca errores a Set-Content menos que use el parámetro AsByteStream con Set-Content.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters: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. Cuando se escribe 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 FileSystem agrega al Get-Content cmdlet . Este parámetro solo funciona en las unidades del sistema de archivos.

Nota:

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

Type:String
Position:Named
Default value:End-of-line character
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Especifica el tipo de codificación del 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 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.

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

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 .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 después de recuperarlos.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

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

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 FileSystem agrega al Get-Content cmdlet Este parámetro solo funciona en unidades del sistema de archivos.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReadCount

Especifica cuántas líneas de contenido se envían al mismo tiempo a través de la canalización. 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.

Type:Int64
Position:Named
Default value:1
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Stream

Nota:

Este parámetro solo está disponible en Windows.

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

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

Este parámetro se incorporó en Windows PowerShell 3.0. En PowerShell 7.2, Get-Content puede recuperar el contenido de flujos de datos alternativos de directorios, así como archivos.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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. Los valores negativos hacen que el cmdlet devuelva todo el contenido.

Este parámetro se introdujo en PowerShell 3.0.

Type:Int32
Aliases:Last
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-TotalCount

Especifica el número de líneas desde el principio de un archivo u otro elemento. Los valores negativos hacen que el cmdlet devuelva todo el contenido.

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

Type:Int64
Aliases:First, Head
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 Wait 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 Get-Content cmdlet . Este parámetro solo funciona en las unidades del sistema de archivos. La espera no se puede combinar con Raw.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 Get-Content cmdlet está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para obtener los proveedores de la sesión, use el Get-PSProvider cmdlet . Para obtener más información, consulte about_Providers.