Get-Content
Obtiene el contenido del elemento en la ubicación especificada.
Sintaxis
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-Content
devuelve 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. Los flujos 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
.
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. 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.
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 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 .
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 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 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 |
-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.
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 FileSystem agrega al Get-Content
cmdlet 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 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.
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 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.
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 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.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar el recuento de lectura o el recuento total a este cmdlet.
String[]
Puede canalizar rutas de acceso a este cmdlet.
Puede canalizar las credenciales a este cmdlet.
Salidas
Cuando se usa el parámetro AsByteStream , este cmdlet devuelve el contenido como bytes.
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.