Con la automatización, leer datos de un archivo de texto es un escenario común. La mayoría de los lenguajes de programación tienen al menos una forma de leer archivos de texto, y PowerShell no es una excepción. El cmdlet Get-Content
de PowerShell, equivalente al comando tail de Unix, lee el contenido de un archivo de texto e importa los datos a una sesión de PowerShell.
El cmdlet Get-Content
de PowerShell es una herramienta indispensable cuando necesitas usar archivos de texto como entrada para tu script. Tal vez tu script de PowerShell necesite leer una lista de computadoras para monitorear o importar una plantilla de correo electrónico para enviar a tus usuarios. ¡`Get-Content` de PowerShell admite fácilmente estos escenarios!
¿Qué tal seguir un archivo de registro en tiempo real? ¡Sí, el cmdlet Get-Content
de PowerShell puede hacer eso también! Continúa leyendo este artículo y aprenderás cómo usar el cmdlet Get-Content
para leer archivos de texto en PowerShell.
Prerrequisitos
Si estás interesado en seguir los ejemplos en este tutorial, necesitarás los siguientes requisitos.
- Necesitarás una computadora que esté ejecutando Windows 10. Este tutorial utiliza la versión 20H2 de Windows 10. Pero no te preocupes, funcionará bien con la versión de Windows 10 que tengas.
- Debes tener al menos Windows PowerShell 5.1, o PowerShell 7.1 instalado en tu computadora. Aquí se utiliza PowerShell 7.1, ¡pero cualquiera de las versiones funcionará!
- Tendrás que escribir y probar comandos, así que necesitarás un editor de código. Los editores recomendados son Windows PowerShell ISE, que viene integrado en Windows, y Visual Studio Code (VSCode). Este artículo utiliza VSCode.
- También será útil si creas un directorio de trabajo en tu computadora. La carpeta de trabajo puede estar en cualquier lugar que desees. Sin embargo, notarás que los ejemplos en este tutorial residen en la carpeta C:\demo.
- ¡Para comenzar, necesitas algo de contenido! Crea un archivo en tu directorio de trabajo con el nombre fruits.txt, que incluya diez frutas diferentes para mayor simplicidad. Utilizarás este archivo de texto en todos los ejemplos.
¿No sabes qué versión de PowerShell tienes? Visita el artículo How to Check your PowerShell Version (All the Ways!).
Leer un archivo de texto y devolver el resultado como una matriz de cadenas
El cmdlet Get-Content
lee el contenido de un archivo y, por defecto, devuelve cada línea de un archivo de texto como un objeto de cadena. Como resultado, la colección de objetos de PowerShell se convierte en una matriz de objetos de cadena.
El código siguiente lee el contenido del archivo fruits.txt y muestra el resultado en la consola de PowerShell, como se ve en la captura de pantalla a continuación.

Get-Content
.Get-Content
lee y almacena el contenido como una matriz, pero ¿cómo puedes estar seguro de eso? Primero, guarda el contenido en un objeto de PowerShell que luego puedes examinar para determinar el tipo.
Al observar la captura de pantalla a continuación, la variable $fruits
es un arreglo que contiene diez objetos. Cada objeto representa una sola línea de texto.

Devolver una Línea Específica de un Archivo de Texto
En el ejemplo anterior, has aprendido que el resultado predeterminado de Get-Content
es un arreglo o una colección de objetos. Cada elemento en una colección corresponde a un número de índice, y los índices de PowerShell típicamente comienzan en cero.
La captura de pantalla a continuación muestra que hay diez elementos en el arreglo de cadenas. El arreglo indexó los diez elementos del cero al nueve.

Para mostrar solo la quinta línea de contenido, necesitarás especificar el número de índice 4
, encerrado entre corchetes (conocido como notación de arreglo).
Puedes notar que el comando
Get-Content
está encerrado entre paréntesis. Esta notación indica a PowerShell que ejecute primero el comando encerrado entre paréntesis antes que otras operaciones.
En la captura de pantalla a continuación, verás que el único resultado devuelto es frambuesa
, que es el elemento en el índice 4
y corresponde a la quinta línea en el archivo de texto.

Get-Content
results.¿Qué pasa si necesitas obtener el contenido en la última línea? Afortunadamente, no necesitas conocer el número total de líneas. En su lugar, usa [-1]
como el índice, y Get-Content
mostrará solo la última línea del archivo.
Limitar el Número de Principales Resultados Devueltos por Get-Content
Utilice el parámetro TotalCount
de Get-Content
para recuperar un número especificado de líneas de un archivo de texto. El parámetro TotalCount
acepta un valor long, lo que significa un valor máximo de 9,223,372,036,854,775,807.
Por ejemplo, el comando a continuación lee el contenido y limita el resultado a tres elementos.
Como cabría esperar, el resultado que se muestra a continuación muestra solo las tres primeras líneas desde el principio del archivo de texto.

Get-Content
command and the TotalCount
parameter.Use el parámetro Tail de PowerShell para devolver resultados desde el final de un archivo
En el ejemplo anterior, utilizó el cmdlet Get-Content
de PowerShell para leer un archivo de texto y limitar los resultados superiores. También es posible lograr lo contrario con Get-Content
de PowerShell. Utilice el parámetro Tail
de PowerShell para leer un número especificado de líneas desde el final de un archivo.
El código de ejemplo a continuación lee el archivo de texto y muestra el contenido de las cuatro últimas líneas.
Después de ejecutar el comando tail
de PowerShell, el resultado esperado se limitará a las últimas cuatro líneas de contenido, como se muestra en la imagen a continuación.

Get-Content
Tail
parameter.El parámetro Tail
se utiliza frecuentemente junto con el parámetro Wait
. El uso del parámetro Wait
mantiene el archivo abierto y verifica si hay contenido nuevo cada segundo. La demostración a continuación muestra los parámetros Tail
y Wait
en acción. Para salir de Wait
, utilice la combinación de teclas CTRL+C
.

wait
and Tail
parameters with Get-Content
.Devolviendo los resultados como una sola cadena
Puede haber notado en ejemplos anteriores que ha estado tratando con matrices de cadenas como salida de Get-Content
en PowerShell. Y como ha aprendido hasta ahora, la naturaleza de las matrices le permite operar sobre el contenido de a un elemento a la vez.
Las matrices a menudo funcionan muy bien, pero pueden dificultar la sustitución de cadenas. El parámetro Raw
de Get-Content
lee todo el contenido de un archivo en un único objeto de cadena. Aunque el código a continuación es el mismo que se usó en el primer ejemplo, el parámetro Raw
almacena el contenido del archivo como una sola cadena.
La captura de pantalla a continuación demuestra que al agregar el parámetro Raw
a Get-Content
, se trata el contenido como una sola cadena y no como una matriz de objetos.

Raw
parameter of Get-Content
reads the file content as a single string object.Una vez que tiene el contenido de un archivo en una sola cadena usando el parámetro Raw
, ¿qué puede hacer con él? Tal vez necesite encontrar y reemplazar una cadena dentro del contenido de ese archivo. En el ejemplo a continuación, Get-Content
lee el contenido de un archivo como una sola cadena. Luego, usando el operador replace
, se reemplaza una palabra específica por otra.
Relacionado: Encontrar y Reemplazar Cadenas

replace
operator.Lee el contenido solo de archivos que coincidan con un filtro
¿Tienes una carpeta llena de archivos pero necesitas leer el contenido de solo algunos seleccionados? Con PowerShell Get-Content
, no necesitas filtrar los archivos por separado antes de leer sus contenidos. El parámetro Filter
de Get-Content
limita los archivos que el cmdlet lee.
Para demostrar la lectura del contenido solo de archivos selectos, primero, crea un par de archivos para leer. Como se muestra a continuación, crea los archivos en tu carpeta de trabajo usando Add-Content
.

.log
files using Add-Content
.Con tus archivos de prueba creados, utiliza los parámetros Filter
y Path
para leer solo los archivos .log
en el directorio raíz. El asterisco utilizado en la definición del filtro indica a Get-Content
que lea cualquier archivo que termine con .log
. El asterisco al final del parámetro de ruta limita la lectura de archivos solo al directorio raíz.
Como se muestra en la salida a continuación, solo se muestra el contenido de los archivos .log
.

Filter
parameter with PowerShell Get-Content
to limit the read files.Relacionado: Get-ChildItem: Listar archivos, registros, certificados y más como uno solo
Leyendo el Flujo de Datos Alternativo de un Archivo
Hasta ahora, has estado trabajando exclusivamente con archivos de texto, pero Get-Content
puede leer datos del flujo de datos alternativo (ADS) de un archivo. Siéntete libre de leer más sobre los flujos, pero puedes pensar en un flujo como otro atributo de datos almacenado junto con el contenido típico del archivo.
Los flujos de datos alternativos son una característica del sistema de archivos NTFS de Windows, por lo tanto, esto no se aplica a
Get-Content
cuando se utiliza con sistemas operativos que no son Windows.
Puedes ver los flujos de datos alternativos ejecutando Get-Item
con el parámetro Stream
. Al referenciar un archivo utilizando el parámetro Stream
, Get-Item
devuelve una propiedad llamada Stream
como se muestra a continuación. Este flujo de contenido de archivo predeterminado se representa con :$DATA
.
Para demostrar el flujo :$DATA
predeterminado, usa el cmdlet Get-Item
para mostrar todos los flujos disponibles en el archivo fruits.txt. Como se muestra a continuación, Get-Item
muestra un solo flujo.

Get-Item
.El parámetro Stream
de Get-Content
lee explícitamente el contenido del flujo :$DATA
predeterminado como se muestra a continuación. El contenido devuelto es el mismo que la salida predeterminada de Get-Content
ya que el flujo :$DATA
se lee por defecto.

:$DATA
stream using Get-Content
.Para demostrar cómo recuperar un flujo de datos alternativo usando Get-Content
, modifica un archivo usando Add-Content
para agregar el nuevo flujo. Usa Get-Item
para mostrar el nuevo flujo junto al flujo predeterminado :$DATA
, como se ve en el siguiente ejemplo.

Dado que solo se lee el flujo :$DATA
de forma predeterminada, usa el parámetro Stream
de Get-Content
para recuperar el nuevo contenido del flujo Secret
. Como se muestra a continuación, se muestra el contenido del flujo Secret
en lugar del contenido predeterminado del archivo.

Get-Content
to read the Secret
alternate data stream content.Pasos siguientes con PowerShell Get-Content
En este artículo, has aprendido muchas formas de usar Get-Content
para leer y manipular contenido. ¡Incluso has aprendido que Get-Content
es lo suficientemente flexible como para leer contenido de flujos de datos alternativos!
Con lo que has aprendido en este artículo, ¿qué otras formas puedes usar Get-Content
en tu trabajo? ¿Quizás puedas usar Get-Content
para determinar si un archivo de respaldo está desactualizado y activar una llamada automática para ejecutar un trabajo de respaldo?
Source:
https://adamtheautomator.com/powershell-get-content/