Test-Path
Determina se todos os elementos de um caminho existem ou não.
Syntax
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
O Test-Path
cmdlet 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 informar se a sintaxe do caminho é válida e se o caminho leva a um contêiner ou um terminal ou elemento folha. Se o Caminho for um espaço em branco ou uma cadeia de caracteres vazia, o cmdlet retornará $false
. Se o Caminho for $null
, uma matriz de $null
ou uma matriz vazia, o cmdlet retornará um erro de não terminação.
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 C:
diretório, o Documents and Settings
diretório e o DavidC
diretório. Se houver algum 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 .dwg.
O comando usa o parâmetro Path para especificar o caminho. Como o caminho inclui um espaço, o caminho está entre aspas. O asterisco no final do caminho indica o conteúdo do diretório Prédios comerciais. 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 Exclude 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 $profile
variável leva a um arquivo. Nesse caso, como o perfil do PowerShell é um .ps1
arquivo, o cmdlet retorna $true
.
Exemplo 5: Verificar caminhos no Registro
Esses comandos usam Test-Path
com o provedor de 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 é mais recente do que uma data especificada
Esse comando usa o parâmetro dinâmico NewerThan para determinar se o pwsh.exe
arquivo no computador é mais recente que July 13, 2009
.
O parâmetro NewerThan funciona apenas em unidades de sistema de arquivos.
Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"
True
Exemplo 7: Testar um caminho com nulo como o valor
O erro retornado para null
, matriz de null
ou matriz vazia é um erro de não encerramento. Ele pode ser suprimido usando -ErrorAction SilentlyContinue
. O exemplo a seguir mostra todos os casos que retornam o NullPathNotPermitted
erro.
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 Path , ela retorna $false
. Essa é uma alteração de 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, o teste da validade do caminho falha 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 representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Especifica os itens que esse cmdlet omite. O valor deste parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt
. Caracteres curinga são permitidos.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Especifica um filtro no formato ou idioma do provedor. O valor deste 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 com que o PowerShell filtre os objetos depois de recuperados.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
Especifica os caminhos que esse cmdlet testa. O valor deste parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt
. Caracteres curinga são permitidos.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
Indica que esse cmdlet testa a sintaxe do caminho, independentemente de os elementos do caminho existirem. Esse 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 false porque não sabe qual provedor de unidade testar.
Observação
Uma alteração interruptiva nas APIs de Caminho foi introduzida no .NET 2.1. Esses métodos não marcar mais para caracteres de caminho inválidos. Essa alteração causou uma regressão no PowerShell em que o IsValid marcar não testa mais caracteres inválidos. A regressão será abordada em uma versão futura. Para obter mais informações, confira Alterações interruptivas no .NET Core 2.1.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Especifica um caminho a ser testado. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres que podem ser interpretados pelo PowerShell como sequências de escape, você deverá colocar o caminho entre aspas para que eles não sejam interpretados.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NewerThan
Esse é um parâmetro dinâmico disponibilizado pelo provedor 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 esse parâmetro.
- Esse parâmetro 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.
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
Esse é um parâmetro dinâmico disponibilizado pelo provedor 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
. - Esse parâmetro quando usado com o parâmetro NewerThan .
- Esse parâmetro 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.
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica um caminho a ser testado. Caracteres curinga são permitidos. Se o caminho incluir espaços, coloque-os entre aspas.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-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 esse 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.
Indica se o elemento final no caminho é ou não de um tipo específico.
Cuidado
Até a versão 6.1.2 do PowerShell, quando as opções IsValid e PathType são especificadas juntas, o Test-Path
cmdlet ignora a opção PathType e valida apenas o caminho sintático sem validar o tipo de caminho.
De acordo com o problema nº 8607, corrigir esse comportamento pode ser uma alteração interruptiva 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.
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode redirecionar uma cadeia de caracteres que contém um caminho, mas não um caminho literal, para esse cmdlet.
Saídas
O cmdlet retorna um valor booliano .
Observações
Os cmdlets que contêm o substantivo Path (os cmdlets Path ) funcionam com o caminho e retornam os nomes em um formato conciso que todos os provedores do PowerShell podem interpretar. Elas foram projetadas 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, Join ou outros manipuladores de caminho.
O Test-Path
foi projetado para trabalhar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis em sua sessão, digite Get-PSProvider
. Para obter mais informações, consulte about_Providers.