- Uso de Get-ChildItem para enumerar archivos y carpetas mediante rutas y filtros.
- Aplicación de parámetros como -Recurse y -Force para búsquedas profundas y archivos ocultos.
- Empleo de comodines y parámetros de inclusión/exclusión para refinar resultados.
- Búsqueda de texto interno en archivos mediante el cmdlet Select-String.
Seguramente te ha pasado que tienes el ordenador hecho un auténtico caos y, cuando necesitas un documento concreto, te vuelves loco buscándolo. Muchos recurrimos a herramientas externas como ‘Everything’ porque son rápidas como un rayo y nos salvan la vida, pero ¿sabías que PowerShell tiene la potencia necesaria para hacer estas tareas sin instalar nada extra? Es una pregunta que se hacen muchos usuarios que quieren dejar de depender de software de terceros y aprovechar al máximo la consola de Windows.
Dominar la búsqueda de archivos mediante comandos no solo es una cuestión de comodidad, sino que es una habilidad crítica para cualquier administrador de sistemas o entusiasta de la informática. Desde listar simples carpetas hasta rastrear archivos ocultos en las profundidades del disco duro, PowerShell ofrece una versatilidad asombrosa que permite automatizar la gestión de archivos y ahorrar horas de trabajo tedioso.
El corazón de la búsqueda: Get-ChildItem

Para empezar a rastrear elementos en nuestro sistema, el comando fundamental es Get-ChildItem. Básicamente, este cmdlet se encarga de enumerar los elementos que se encuentran dentro de una ubicación específica, ya sea una carpeta, una unidad de red o incluso claves del registro. Es el equivalente moderno al antiguo comando ‘dir’ de CMD o al ‘ls’ de los sistemas Unix.
Si solo quieres ver qué hay en una carpeta concreta, basta con indicarle la ruta mediante el parámetro -Path. Por ejemplo, al ejecutarlo sobre la carpeta de Windows, obtendremos una lista con el modo, la fecha de última modificación, el tamaño y el nombre de cada archivo. Si lo que necesitas es limpiar la salida y que solo aparezcan los nombres, puedes añadir el parámetro -Name para obtener una lista mucho más compacta y directa.
Búsquedas profundas y archivos invisibles
A veces el archivo que buscamos no está a simple vista, sino enterrado en varias subcarpetas. Para solucionar esto, entra en juego el parámetro -Recurse, que obliga a PowerShell a explorar toda la jerarquía de directorios hacia abajo. Si quieres limitar cuánto debe bajar el comando, puedes usar -Depth para definir el número exacto de niveles de subdirectorios que quieres analizar, evitando así que el proceso se vuelva eterno.
Hay otra complicación común: los archivos ocultos. Por defecto, Get-ChildItem ignora aquello que el Explorador de archivos mantiene escondido. Para forzar la aparición de estos elementos, debemos usar el parámetro -Force. Esto es vital cuando buscamos archivos de sistema o configuraciones que normalmente no están visibles para el usuario común.
El arte de filtrar con comodines

No siempre recordamos el nombre exacto de un archivo, y ahí es donde los caracteres comodín se vuelven nuestra mejor arma. El asterisco (*) sirve para representar cualquier cantidad de caracteres, mientras que el signo de interrogación (?) sustituye exactamente a un solo carácter. Si usamos corchetes [], podemos buscar archivos que empiecen por una letra específica de un grupo, como buscar todo lo que empiece por ‘x’ o ‘z’.
Para refinar aún más los resultados, tenemos dos parámetros clave: -Include y -Exclude. El primero nos permite centrar la búsqueda en extensiones concretas (como todos los .log), mientras que el segundo es ideal para descartar ruido, permitiéndonos omitir patrones no deseados durante el rastreo recursivo.
Búsqueda de contenido con Select-String
Pero, ¿qué pasa si no buscas el archivo por su nombre, sino por lo que hay escrito dentro? Para eso existe Select-String, que funciona de forma muy similar al famoso ‘grep’ de Linux. Esta herramienta es una joya para los profesionales de DevOps, ya que permite rastrear cadenas de texto en archivos de registro o de configuración gigantescos.
Este comando es extremadamente flexible gracias a que soporta expresiones regulares, lo que permite encontrar patrones complejos de texto. Podemos combinarlo con el parámetro -Context para ver las líneas que rodean a la coincidencia, dándonos una visión más clara del error o el dato que estamos analizando. Además, podemos pasar estos resultados a Where-Object para filtrar, por ejemplo, solo las líneas que superen un número determinado.
Casos avanzados y auditoría

PowerShell no se limita al sistema de archivos convencional. Podemos usar Get-ChildItem para navegar por el Registro de Windows (usando la unidad HKLM:) o para gestionar certificados digitales en la unidad Cert:. Incluso existen formas de rastrear archivos por su propietario combinando este cmdlet con Get-Acl, lo cual es fundamental cuando un empleado deja una empresa y necesitamos localizar todos sus documentos para delegarlos.
Para optimizar el rendimiento, es recomendable usar el parámetro -Filter siempre que sea posible, ya que este filtra los archivos a nivel de proveedor del sistema de archivos antes de que lleguen a PowerShell, resultando en una ejecución mucho más rápida que usar el filtrado posterior. Si los resultados son demasiados, siempre podemos enviarlos a un archivo externo mediante Out-File para analizarlos con calma en un editor de texto.
La versatilidad de PowerShell permite pasar de una simple enumeración de archivos a una auditoría completa del sistema, integrando la búsqueda de nombres, el filtrado de atributos y la inspección de contenido textual en un flujo de trabajo automatizado que elimina el error humano y la lentitud de las búsquedas manuales.