Articles

Básicos de PowerShell: Uso de Test-Path para comprobar si un archivo existe con ejemplos

Posted on

Cmdlet de PowerShell Test-Path

Si hay un problema para encontrar un archivo, o para comprobar un objeto contenedor, entonces llame a Test-Path de PowerShell; responderá con un ‘Verdadero o Falso’.

  • Ejemplo clásico: PowerShell comprueba si un archivo existe
  • PowerShell Test-Path -IsValid
  • PowerShell Test-Path -Exclude
  • Un ejemplo de Test-Path para hacer pensar
  • Test-Path -PathType

Ejemplo clásico: PowerShell comprueba si un archivo existe

Comienza con un sencillo script para comprobar la existencia de tu archivo.

# PowerShell Check If File Exists$WantFile = "C:\Windows\explorer.exe"Test-Path $WantFile

Nota 1: El único resultado que PowerShell puede devolver es un verdadero o un falso. Sin embargo, Test-Path pide a gritos una sentencia ‘if’ para actuar sobre la salida, así:-

Nota 2: Como con todos estos scripts, por favor, modifique mis ejemplos para que se adapten a su entorno.

Guy Recomienda: SolarWinds Wake-On-LAN Utility (FREE TOOL)

Animar a los ordenadores a dormir cuando no están en uso es una gran idea – ¡hasta que esté lejos de su escritorio y necesite un archivo en esa máquina remota que está durmiendo!

WOL también tiene usos comerciales, por ejemplo, despertar a las máquinas para que se les apliquen parches de actualización. La verdadera razón por la que le recomiendo que descargue esta herramienta gratuita es porque es muy divertido enviar esos «paquetes mágicos». Prueba WOL – es gratis.

SolarWinds Wake-On-LAN Download 100% FREE Tool

Variables ambientales de Test-Path

Además de las ubicaciones físicas de los archivos, también puedes emplear Test-Path para interrogar al registro o como aquí, Variables ambientales.

# PowerShell Test-Path for Environmental VariablesTest-Path env:\PathExt

Desafío: ¿Cuáles de estas son realmente variables de entorno?
Public, Private, Temp, Tump y Tmp

PowerShell Test-Path -IsValid

Una de las tareas infravaloradas de Test-Path es validar que la parte de la ruta de un script realmente existe.

PowerShell Test-Path -Exclude

Aquí tenemos un problema de la vida real, quería ver si había algún archivo que no fuera .gif, pnp, bmp o .jpg, que se hubiera mezclado con mi colección de fotos. Supuesto: los archivos que me (nos) interesan están almacenados en H:\Sports\fun_pictures\

Nota 3: Tendrás que editar el archivo anterior radicalmente si quieres que funcione en tu ordenador. Cambia los valores de $ImageFiles y también ajusta las extensiones de archivo -exclude. Ver más en PowerShell Else.

El tipo recomienda: SolarWinds Engineer’s Toolset (PRUEBA GRATUITA)

Este Engineer’s Toolset proporciona una completa consola de 50 utilidades para la resolución de problemas informáticos. Guy dice que me ayuda a supervisar lo que ocurre en la red, y cada herramienta me enseña más sobre el funcionamiento del sistema subyacente.

Hay tantos aparatos buenos; es como tener rienda suelta a una tienda de golosinas. Afortunadamente, las utilidades se muestran de forma lógica: monitorización, descubrimiento de redes, diagnóstico y herramientas de Cisco. Pruebe ahora el SolarWinds Engineer’s Toolset en una prueba gratuita de 14 días

SolarWinds Engineer’s Toolset Download 14-day FREE Trial

Un ejemplo de ruta de prueba para hacerle pensar

Nota 4: He creado este script deliberadamente. No tiene sentido en términos prácticos. Por favor, ajuste el valor de Excluir *.* a *.exe o *.dll. Como puede ver los comodines están permitidos en la ruta y en las extensiones.

Nota 5: Aquí he utilizado explícitamente el parámetro -Path, sin embargo, cualquier valor después de Test-Path se asume como la ubicación, por lo que -Path es opcional.

Nota 6: A menudo encuentro que experimentar con Get-ChildItem junto a Test-Path revela las fortalezas y debilidades de estos dos cmdlets.

Investiga el cmdlet PowerShell Test-Path

# Find out more about PowerShell Test-Path cmdletClear-HostGet-Help Test-Path -full

Nota 7: Interrogando a Test-Path con Get-Help podemos desenterrar parámetros útiles como -IsValid para comprobar la ruta. También están -Include y -exclude, que refinan el contenido de la búsqueda. Fue gracias a Get-Help que descubrí -PathType.

Test-Path -PathType

El propósito principal del parámetro -PathType es comprobar si el objeto es un archivo o una carpeta. Sin embargo, también se puede utilizar en el registro para comprobar si hay claves o datos.

Trap: HKLM: necesita esos dos puntos. Si simplemente se exportan áreas del registro, luego se copian como:
HKEY_LOCAL_MACHINE\NSOFTWARE\NMicrosoft\NWindows NT\NCurrentVersion\NWinlogon
hay problemas.

HKEY_LOCAL_MACHINE está bien, el espacio entre Windows y NT no es un problema, pero la falta de dos puntos es un obstáculo, debería ser:
HKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Guy Recomienda: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) le ayudará a descubrir lo que está sucediendo en su red. Esta utilidad también le guiará en la resolución de problemas; el panel de control le indicará si la causa raíz es un enlace roto, un equipo defectuoso o una sobrecarga de recursos.

Lo que más me gusta es la forma en que NPM sugiere soluciones a los problemas de la red. Su también tiene la capacidad de supervisar la salud de las máquinas virtuales VMware individuales. Si usted está interesado en la solución de problemas, y la creación de mapas de red, entonces le recomiendo que pruebe NPM en una prueba gratuita de 30 días.

SolarWinds Network Performance Monitor Descargar 30 días de prueba GRATIS

El resto de la familia de rutas

Aquí hay una técnica sencilla para encontrar más cmdlets. Get-Command -Noun suele arrojar resultados interesantes, por ejemplo Resolve-Path.

# PowerShell Path Cmdlet ResearchClear-HostGet-Command -Noun Path
Convert-Path
Join-Path
Resolve-Path
Split-Path
Test-Path

Ejemplo de Join-Path

Aquí hay un bonito script para encontrar qué unidad aloja una carpeta concreta.

Clear-Host$Folder = "Stuff"Get-PSDrive | Where-Object {$_.root -match ":\\" -and (Test-Path $(Join-Path $_.root $Folder))}

Nota 8: Por favor, cambia «Stuff» por el nombre de la carpeta que buscas.
Por ejemplo: $Carpeta = «Archivos de programa»

Ver más tareas de la vida real para PowerShell»

Resumen del cmdlet PowerShell Test-Path

La tarea clásica de PowerShell Test-Path es comprobar que un archivo existe. Sin embargo, puedes ampliar su utilidad comprobando las rutas del registro, o para buscar archivos con una extensión determinada.

Ver más tutoriales de Microsoft PowerShell:

– Inicio de PowerShell – Test-ServerHealth – Test-SystemHealth – Test-Connection – Test-Path

– PowerShell Logon Script – PowerShell add printer – PowerShell Schedule Task – Free CSVDE Tool

– Map Network Drive – Exchange 2010 PowerShell Cmdlets – Exchange 2010 Performance Monitor

Por favor, envíame un email si tienes mejores ejemplos de scripts. También por favor reporten cualquier error de hecho, errores gramaticales o enlaces rotos, estaré encantado de corregir la falla.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *