Test-Path
Determina si existen todos los elementos de una ruta de acceso.
Sintaxis
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Description
El Test-Path
cmdlet determina si existen todos los elementos de la ruta de acceso. Devuelve $true
si existen todos los elementos y $false
si falta alguno. También puede indicar si la sintaxis de la ruta de acceso es válida y si la ruta de acceso conduce a un contenedor o a un terminal o elemento hoja. Si la ruta de acceso es un espacio en blanco o una cadena vacía, el cmdlet devuelve $false
. Si la ruta de acceso es $null
, una matriz de $null
o una matriz vacía, el cmdlet devuelve un error de no terminación.
Ejemplos
Ejemplo 1: Probar una ruta de acceso
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Este comando comprueba si existen todos los elementos de la ruta de acceso, incluido el C:
directorio, el Documents and Settings
directorio y el DavidC
directorio . Si falta alguno, el cmdlet devuelve $false
. De lo contrario, devuelve $true
.
Ejemplo 2: Probar la ruta de acceso de un perfil
Test-Path -Path $profile
False
Test-Path -Path $profile -IsValid
True
Estos comandos prueban la ruta de acceso del perfil de PowerShell.
El primer comando determina si existen todos los elementos de la ruta de acceso. El segundo comando determina si la sintaxis de la ruta de acceso es correcta. En este caso, la ruta de acceso es $false
, pero la sintaxis es correcta $true
. Estos comandos usan $profile
, la variable automática que apunta a la ubicación del perfil, incluso si el perfil no existe.
Para obtener más información sobre las variables automáticas, consulte about_Automatic_Variables.
Ejemplo 3: Comprobar si hay archivos además de un tipo especificado
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Este comando comprueba si hay archivos en el directorio Edificios comerciales distintos de .dwg archivos.
El comando usa el parámetro Path para especificar la ruta de acceso. Dado que la ruta de acceso incluye un espacio, la ruta de acceso se incluye entre comillas. El asterisco al final de la ruta de acceso indica el contenido del directorio Commercial Building. Con rutas de acceso largas, como esta, escriba las primeras letras de la ruta de acceso y, a continuación, use la tecla TAB para completar la ruta de acceso.
El comando especifica el parámetro Exclude para especificar los archivos que se omitirán de la evaluación.
En este caso, dado que el directorio solo contiene .dwg archivos, el resultado es $false
.
Ejemplo 4: Comprobación de un archivo
Test-Path -Path $profile -PathType leaf
True
Este comando comprueba si la ruta de acceso almacenada en la $profile
variable conduce a un archivo. En este caso, dado que el perfil de PowerShell es un .ps1
archivo, el cmdlet devuelve $true
.
Ejemplo 5: Comprobación de rutas de acceso en el Registro
Estos comandos se usan Test-Path
con el proveedor del Registro de PowerShell.
El primer comando comprueba si la ruta de acceso del Registro de la clave del Registro Microsoft.PowerShell es correcta en el sistema. Si PowerShell está instalado correctamente, el cmdlet devuelve $true
.
Importante
Test-Path
no funciona correctamente con todos los proveedores de PowerShell. Por ejemplo, puede usar Test-Path
para probar la ruta de acceso de una clave del Registro, pero si la usa para probar la ruta de acceso de una entrada del Registro, siempre devuelve $false
, incluso si la entrada del Registro está presente.
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
True
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy"
False
Ejemplo 6: Prueba si un archivo es más reciente que una fecha especificada
Este comando usa el parámetro dinámico NewerThan para determinar si el pwsh.exe
archivo del equipo es más reciente que July 13, 2009
.
El parámetro NewerThan solo funciona en unidades del sistema de archivos.
Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"
True
Ejemplo 7: Probar una ruta de acceso con null como valor
El error devuelto para null
, matriz de null
o matriz vacía es un error de no terminación. Se puede suprimir mediante -ErrorAction SilentlyContinue
. En el ejemplo siguiente se muestran todos los casos que devuelven el NullPathNotPermitted
error.
Test-Path $null
Test-Path $null, $null
Test-Path @()
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At line:1 char:11
+ Test-Path $null
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
Ejemplo 8: Prueba de una ruta de acceso con espacios en blanco como valor
Cuando se proporciona una cadena de espacio en blanco para el parámetro Path , devuelve $false
. Este es un cambio de Windows PowerShell 5.1. Cuando se proporciona una cadena vacía, Test-Path
devuelve un error.
En el ejemplo siguiente se muestran los espacios en blanco y la cadena vacía.
Test-Path ' '
Test-Path ''
False
False
Ejemplo 9: Probar una ruta de acceso que puede tener una unidad no válida
Al probar una ruta de acceso que incluye una especificación de unidad, se produce un error al probar la validez de la ruta de acceso si la unidad no existe. Puede prefijar la unidad con el nombre del proveedor para solucionar este problema.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Parámetros
-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: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Exclude
Especifica los elementos que este cmdlet omite. 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.
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 en el formato o idioma del proveedor. El valor de este parámetro califica el parámetro Path . La sintaxis del filtro, incluido el uso de caracteres comodín, depende del proveedor. Los filtros son más eficaces que otros parámetros, ya que el proveedor los aplica cuando recupera 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 |
-Include
Especifica las rutas de acceso que prueba este cmdlet. 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.
Tipo: | String[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-IsValid
Indica que este cmdlet prueba la sintaxis de la ruta de acceso, independientemente de si existen los elementos de la ruta de acceso. Este cmdlet devuelve $true
si la sintaxis de la ruta de acceso es válida y $false
si no lo es. Si la ruta de acceso que se prueba incluye una especificación de unidad, el cmdlet devuelve false cuando la unidad no existe. PowerShell devuelve false porque no sabe qué proveedor de versiones se va a probar.
Nota:
Se introdujo un cambio importante en las API de ruta de acceso en .NET 2.1. Esos métodos ya no comprueban si hay caracteres de ruta de acceso no válidos. Este cambio provocó una regresión en PowerShell donde la comprobación isValid ya no comprueba si hay caracteres no válidos. La regresión se abordará en una versión futura. Para obtener más información, vea Cambios importantes en .NET Core 2.1.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-LiteralPath
Especifica la ruta de acceso que se va a probar. A diferencia de Path, el valor del parámetro LiteralPath se usa exactamente como se escribe. Ningún carácter se interpreta como carácter comodín. Si la ruta de acceso incluye caracteres que PowerShell podría interpretar como secuencias de escape, debe incluir la ruta de acceso entre comillas simples para que no se interpreten.
Tipo: | String[] |
Alias: | PSPath, LP |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-NewerThan
Se trata de un parámetro dinámico que el proveedor FileSystem pone a disposición.
Especifique una hora como un objeto DateTime .
Antes de PowerShell 7.5, el cmdlet omite:
- Este parámetro al especificar PathType como cualquier valor distinto de
Any
. - Parámetro OlderThan cuando se usa con este parámetro.
- Este parámetro cuando Path apunta a un directorio.
A partir de PowerShell 7.5, puede usar este parámetro con cualquier valor para el parámetro PathType , para probar un intervalo de fechas con el parámetro OlderThan y para probar la antigüedad de los directorios.
Para obtener más información, consulte about_FileSystem_Provider.
Tipo: | Nullable<T>[[DateTime]] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-OlderThan
Se trata de un parámetro dinámico que el proveedor FileSystem pone a disposición.
Especifique una hora como un objeto DateTime .
Antes de PowerShell 7.5, el cmdlet omite:
- Este parámetro al especificar PathType como cualquier valor distinto de
Any
. - Este parámetro se usa con el parámetro NewerThan .
- Este parámetro cuando Path apunta a un directorio.
A partir de PowerShell 7.5, puede usar este parámetro con cualquier valor para el parámetro PathType , probar un intervalo de fechas con el parámetro NewerThan y probar la antigüedad de los directorios.
Para obtener más información, consulte about_FileSystem_Provider.
Tipo: | Nullable<T>[[DateTime]] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Especifica la ruta de acceso que se va a probar. Se permite el uso de caracteres comodín. Si la ruta de acceso incluye espacios, escríbala entre comillas.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | True |
-PathType
Especifica el tipo del elemento final en la ruta de acceso. Este cmdlet devuelve $true
si el elemento es del tipo especificado y $false
si no lo es. Los valores permitidos para este parámetro son los siguientes:
Container
: un elemento que contiene otros elementos, como un directorio o una clave del Registro.Leaf
: un elemento que no contiene otros elementos, como un archivo.Any
- Un contenedor o una hoja.
Indica si el último elemento de la ruta de acceso es de un tipo determinado.
Precaución
Hasta la versión 6.1.2 de PowerShell, cuando se especifican juntos los modificadores IsValid y PathType , el Test-Path
cmdlet omite el modificador PathType y solo valida la ruta de acceso sintáctica sin validar el tipo de ruta de acceso.
Según el problema 8607, corregir este comportamiento puede ser un cambio importante en una versión futura, donde los modificadores IsValid y PathType pertenecen a conjuntos de parámetros independientes y, por lo tanto, no se pueden usar conjuntamente evitando esta confusión.
Tipo: | TestPathType |
Alias: | Type |
Valores aceptados: | Any, Container, Leaf |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar una cadena que contenga una ruta de acceso, pero no una ruta de acceso literal, a este cmdlet.
Salidas
El cmdlet devuelve un valor booleano .
Notas
Los cmdlets que contienen el nombre path (cmdlets path) funcionan con path y devuelven los nombres en un formato conciso que todos los proveedores de PowerShell pueden interpretar. Están diseñados para su uso en programas y scripts en los que desea mostrar toda o parte de una ruta de acceso en un formato determinado. Úselos como usaría Dirname, Normpath, Realpath, Join u otros manipuladores de rutas de acceso.
Test-Path
está diseñado para trabajar con los datos expuestos por cualquier proveedor. Para enumerar los proveedores disponibles en la sesión, escriba Get-PSProvider
. Para obtener más información, consulte about_Providers.