Compartilhar via


Test-Path

Determina se todos os elementos de um caminho existem.

Sintaxe

Path (Default) - FileSystem provider

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

LiteralPath - FileSystem provider

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

Path (Default) - All providers

Test-Path
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

LiteralPath - All providers

Test-Path
    -LiteralPath <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

Description

O cmdlet Test-Path determina se todos os elementos do caminho existem. Ele retornará $true se todos os elementos existirem e $false se houver algum ausente. Ele também pode dizer se a sintaxe do caminho é válida e se o caminho leva a um contêiner ou a um elemento terminal ou folha. Se o caminho for um espaço em branco ou uma cadeia de caracteres vazia, o cmdlet retornará $false. Se Path é $null, uma matriz de $null ou uma matriz vazia, o cmdlet retorna um erro recuperável.

Exemplos

Exemplo 1: testar um caminho

Test-Path -Path "C:\Documents and Settings\DavidC"
True

Esse comando verifica se todos os elementos no caminho existem, incluindo o diretório C:, o diretório Documents and Settings e o diretório DavidC. Caso algum esteja ausente, o cmdlet retornará $false. Caso contrário, ele retornará $true.

Exemplo 2: Testar o caminho de um perfil

Test-Path -Path $PROFILE
False
Test-Path -Path $PROFILE -IsValid
True

Esses comandos testam o caminho do perfil do PowerShell.

O primeiro comando determina se todos os elementos no caminho existem. O segundo comando determina se a sintaxe do caminho está correta. Nesse caso, o caminho é $false, mas a sintaxe está correta $true. Esses comandos usam $PROFILE, a variável automática que aponta para o local do perfil, mesmo que o perfil não exista.

Para obter mais informações sobre variáveis automáticas, consulte about_Automatic_Variables.

Exemplo 3: verificar se há arquivos além de um tipo especificado

Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False

Esse comando verifica se há arquivos no diretório edifícios comerciais que não sejam arquivos de .dwg.

O comando usa o parâmetro Path para especificar o caminho. Como o caminho inclui um espaço, ele é colocado entre aspas. O asterisco no final do caminho indica o conteúdo do diretório do Edifício Comercial. Com caminhos longos, como este, digite as primeiras letras do caminho e use a tecla TAB para concluir o caminho.

O comando especifica o parâmetro Excluir para especificar arquivos a serem omitidos da avaliação.

Nesse caso, como o diretório contém apenas arquivos .dwg, o resultado é $false.

Exemplo 4: Verificar se há um arquivo

Test-Path -Path $PROFILE -PathType Leaf
True

Esse comando verifica se o caminho armazenado na variável $PROFILE leva a um arquivo. Nesse caso, como o perfil do PowerShell é um arquivo .ps1, o cmdlet retorna $true.

Exemplo 5: Verificar caminhos no Registro

Esses comandos usam Test-Path com o provedor do Registro do PowerShell.

O primeiro comando testa se o caminho do Registro da chave do Registro Microsoft.PowerShell está correto no sistema. Se o PowerShell estiver instalado corretamente, o cmdlet retornará $true.

Importante

Test-Path não funciona corretamente com todos os provedores do PowerShell. Por exemplo, você pode usar Test-Path para testar o caminho de uma chave do Registro, mas se usá-la para testar o caminho de uma entrada do Registro, ela sempre retornará $false, mesmo que a entrada do Registro esteja 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

Exemplo 6: Testar se um arquivo está em um intervalo de datas

Esse comando usa os parâmetros dinâmicos NewerThan e OlderThan para determinar se o arquivo pwsh.exe no computador é mais recente que July 13, 2009 e mais antigo do que na semana passada.

Os parâmetros NewerThan e OlderThan são funcionais apenas em unidades de sistema de arquivos.

Get-Command pwsh |
    Select-Object -ExpandProperty Path |
    Test-Path -NewerThan "July 13, 2009" -OlderThan (Get-Date).AddDays(-7)
True

Exemplo 7: Testar um caminho com nulo como o valor

O erro retornado para null, matriz de null ou matriz vazia é um erro não terminante. Ele pode ser suprimido usando -ErrorAction SilentlyContinue. O exemplo a seguir mostra todos os casos que retornam o erro 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

Exemplo 8: Testar um caminho com espaço em branco como o valor

Quando uma cadeia de caracteres de espaço em branco é fornecida para o parâmetro caminho , ela retorna $false. Essa é uma alteração do Windows PowerShell 5.1. Quando uma cadeia de caracteres vazia é fornecida, Test-Path retorna um erro. O exemplo a seguir mostra o espaço em branco e a cadeia de caracteres vazia.

Test-Path ' '
Test-Path ''
False
False

Exemplo 9: Testar um caminho que pode ter uma unidade inválida

Quando você testa um caminho que inclui uma especificação de unidade, a validação do caminho falhará se a unidade não existir. Você pode prefixar a unidade com o nome do provedor para contornar esse problema.

Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True

Parâmetros

-Credential

Observação

Esse parâmetro não é compatível com nenhum provedor instalado com o PowerShell. Para executar este cmdlet em nome de outro usuário ou elevar suas credenciais, use Invoke-Command.

Propriedades do parâmetro

Tipo:PSCredential
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-Exclude

Especifica os itens que esse cmdlet omite. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt. Caracteres curinga são permitidos.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:True
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Filter

Especifica um filtro no formato ou idioma do provedor. O valor desse parâmetro qualifica o parâmetro Path. A sintaxe do filtro, incluindo o uso de caracteres curinga, depende do provedor. Os filtros são mais eficientes do que outros parâmetros, pois o provedor os aplica quando recupera os objetos em vez de fazer o PowerShell filtrar os objetos após serem recuperados.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:True
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Include

Especifica os caminhos que esse cmdlet testa. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt. Caracteres curinga são permitidos.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:True
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-IsValid

Indica que esse cmdlet testa a sintaxe do caminho, independentemente de os elementos do caminho existirem. Este cmdlet retornará $true se a sintaxe do caminho for válida e $false se não for. Se o caminho que está sendo testado incluir uma especificação de unidade, o cmdlet retornará false quando a unidade não existir. O PowerShell retorna falso porque não sabe qual provedor de unidade testar.

Observação

Uma alteração significativa nas APIs do Path foi introduzida no .NET 2.1. Esses métodos não verificam mais se há caracteres de caminho inválidos. Essa mudança causou uma regressão no PowerShell, onde a verificação IsValid não testa mais caracteres inválidos. A regressão será tratada em uma versão futura. Para obter mais informações, consulte Alterações interruptivas no .NET Core 2.1.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-LiteralPath

Especifica um caminho a ser testado. Ao contrário do caminho , o valor do parâmetro LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres que possam ser interpretados pelo PowerShell como sequências de escape, você deverá colocar o caminho entre aspas para que eles não sejam interpretados.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:PSPath, LP

Conjuntos de parâmetros

LiteralPath
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-NewerThan

Esse é um parâmetro dinâmico disponibilizado pelo provedor de FileSystem.

Especifique uma hora como um objeto DateTime.

Antes do PowerShell 7.5, o cmdlet ignora:

  • Esse parâmetro quando você especifica PathType como qualquer valor diferente de Any.
  • O parâmetro OlderThan quando usado com este parâmetro.
  • Este parâmetro é usado quando Path aponta para um diretório.

A partir do PowerShell 7.5, você pode usar esse parâmetro com qualquer valor para o parâmetro PathType, testar um intervalo de datas com o parâmetro OlderThan e testar a idade dos diretórios.

Para obter mais informações, consulte about_FileSystem_Provider.

Propriedades do parâmetro

Tipo:

Nullable<T>[[DateTime]]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-OlderThan

Esse é um parâmetro dinâmico disponibilizado pelo provedor de FileSystem.

Especifique uma hora como um objeto DateTime.

Antes do PowerShell 7.5, o cmdlet ignora:

  • Esse parâmetro quando você especifica PathType como qualquer valor diferente de Any.
  • Este parâmetro quando usado com o parâmetro NewerThan.
  • Este parâmetro é usado quando Path aponta para um diretório.

A partir do PowerShell 7.5, você pode usar esse parâmetro com qualquer valor para o parâmetro PathType, testar um intervalo de datas com o parâmetro NewerThan e testar a idade dos diretórios.

Para obter mais informações, consulte about_FileSystem_Provider.

Propriedades do parâmetro

Tipo:

Nullable<T>[[DateTime]]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Path

Especifica um caminho a ser testado. Caracteres curinga são permitidos. Se o caminho incluir espaços, coloque-os entre aspas.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:True
DontShow:False

Conjuntos de parâmetros

Path
Cargo:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-PathType

Especifica o tipo do elemento final no caminho. Esse cmdlet retornará $true se o elemento for do tipo especificado e $false se não for. Os valores aceitáveis para este parâmetro são:

  • Container – um elemento que contém outros elementos, como um diretório ou chave do Registro.
  • Leaf – um elemento que não contém outros elementos, como um arquivo.
  • Any - um contêiner ou uma folha.

Informa se o elemento final no caminho é de um tipo específico.

Cuidado

Até o PowerShell versão 6.1.2, quando as opções IsValid e PathType são especificadas juntas, o cmdlet Test-Path ignora a opção PathType e valida apenas o caminho sintactico sem validar o tipo de caminho.

De acordo com problema nº 8607, corrigir esse comportamento pode ser uma alteração significativa em uma versão futura, em que as opções IsValid e PathType pertencem a conjuntos de parâmetros separados e, portanto, não podem ser usados juntos evitando essa confusão.

Propriedades do parâmetro

Tipo:TestPathType
Valor padrão:None
Valores aceitos:Any, Container, Leaf
Dá suporte a curingas:False
DontShow:False
Aliases:Tipo

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

String

Você pode redirecionar uma cadeia de caracteres que contém um caminho, mas não um caminho literal, para este cmdlet.

Saídas

Boolean

O cmdlet retorna um valor booleano de .

Observações

Os cmdlets que contêm o substantivo Path (os cmdlets de Caminho do) funcionam com o caminho e retornam os nomes em um formato conciso que todos os provedores do PowerShell podem interpretar. Eles são projetados para uso em programas e scripts em que você deseja exibir todo ou parte de um caminho em um formato específico. Use-os como você usaria Dirname, Normpath, Realpath, Joinou outros manipuladores de caminho.

O Test-Path foi projetado para trabalhar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis na sessão, digite Get-PSProvider. Para obter mais informações, consulte about_Providers.