Compartir a través de


Test-Path

Determina si existen todos los elementos de una ruta de acceso.

Sintaxis

Path (valor predeterminado)

Test-Path
    [-Path] <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-UseTransaction]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

LiteralPath

Test-Path
    -LiteralPath <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-UseTransaction]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

Description

El cmdlet Test-Path determina si existen todos los elementos de la ruta. Devuelve $True si todos los elementos existen 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 lleva a un contenedor o a un elemento de terminal u hoja. Si el Path es un espacio en blanco, se devuelve $False. Si el Path es una cadena vacía, $null, matriz de $null o matriz vacía, se 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, es decir, el directorio C: , el directorio Documents and Settings y el directorio DavidC. Si falta alguno, el cmdlet devuelve $False. En caso 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. 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, 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 variable $profile conduce a un archivo. En este caso, dado que el perfil de PowerShell es un archivo .ps1, el cmdlet devuelve $True.

Ejemplo 5: Comprobación de rutas de acceso en el Registro

Estos comandos 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 de 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 lo 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 archivo "PowerShell.exe" en el equipo es más reciente que "13 de julio de 2009".

El parámetro NewerThan solo funciona en unidades del sistema de archivos.

Test-Path $pshome\PowerShell.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 no terminal. Puedes suprimirlo mediante -ErrorAction SilentlyContinue. En el ejemplo siguiente se muestran todos los casos que devuelven el error de NullPathNotPermitted.

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 un espacio en blanco es o una cadena vacía proporcionada para el parámetro -Path, devuelve false. En el ejemplo siguiente se muestran espacios en blanco y cadenas vacías.

Test-Path ' '
Test-Path ''
False
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At line:1 char:11
+ Test-Path ''
+           ~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand

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.

Propiedades de parámetro

Tipo:PSCredential
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-Exclude

Especifica los elementos que este cmdlet omite. El valor de este parámetro define el parámetro Path. Escriba un elemento o patrón de ruta de acceso, como "*.txt". Se permite el uso de caracteres comodín.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Filter

Especifica un filtro en el formato o idioma del proveedor. El valor de este parámetro define 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 una vez recuperados.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Include

Especifica las rutas de acceso que prueba este cmdlet. El valor de este parámetro define el parámetro Path. Escriba un elemento o patrón de ruta de acceso, como "*.txt". Se permite el uso de caracteres comodín.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-IsValid

Indica que este cmdlet prueba la sintaxis de la ruta, independientemente de si existen los elementos de la ruta. Este cmdlet devuelve $True si la sintaxis de la ruta de acceso es válida y $False si no lo es.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 de escape, escríbala entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:PSPath

Conjuntos de parámetros

LiteralPath
Posición:Named
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-NewerThan

Especifique una hora como un objeto del tipo DateTime .

Propiedades de parámetro

Tipo:DateTime
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-OlderThan

Especifique una hora como un objeto del tipo DateTime .

Propiedades de parámetro

Tipo:DateTime
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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íbalo entre comillas.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

Path
Posición:0
Obligatorio:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-PathType

Especifica el tipo del elemento final en la ruta. Este cmdlet devuelve $True si el elemento es del tipo especificado y $False si no lo es. Los valores aceptables para este parámetro son:

  • Contenedor. Elemento que contiene otros elementos, como un directorio o una clave del Registro.
  • Hoja. Elemento que no contiene otros elementos, como un archivo.
  • Cualquiera. Un contenedor o una hoja.

Indica si el elemento final de la ruta de acceso es de un tipo determinado.

Precaución

Hasta la versión 6.1.2 de PowerShell, cuando el conmutador IsValid y el conmutador PathType se especifican juntos, el cmdlet Test-Path omite el conmutador PathType y valida únicamente la ruta sintáctica sin validar el tipo de ruta.

Según 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.

Propiedades de parámetro

Tipo:TestPathType
Valor predeterminado:None
Valores aceptados:Any, Container, Leaf
Admite caracteres comodín:False
DontShow:False
Alias:Tipo

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-UseTransaction

Incluye el comando en la transacción activa. Este parámetro solo es válido cuando una transacción está en curso. Para obtener más información, consulte about_Transactions

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:usetx

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

String

Puede pasar una cadena que contenga una ruta, pero no una ruta literal, a este cmdlet.

Salidas

Boolean

El cmdlet devuelve un valor booleano.

Notas

Los cmdlets que contienen el sustantivo Path (los cmdlets Path) trabajan con nombres de rutas 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 todo o parte de un nombre de ruta de acceso en un formato determinado. Úselos como usaría Dirname, Normpath, Realpath, Join u otros manipuladores de ruta de acceso.

El 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.