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>]
Descrição
O Test-Path cmdlet determina se todos os elementos do caminho existem. Retorna $true se todos os elementos existirem e $false se algum estiver em falta. Também pode indicar se a sintaxe do caminho é válida e se o caminho conduz a um contentor, a um terminal ou elemento folha. Se o Path for um espaço em branco ou uma cadeia vazia, então o cmdlet devolve $false. Se o Path for $null, um array de $null ou um array vazio, o cmdlet devolve um erro que não termina.
Exemplos
Exemplo 1: Testar um caminho
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Este comando verifica se todos os elementos do caminho existem, incluindo o C: diretório, o Documents and Settings diretório e o DavidC diretório. Se algum estiver em falta, o cmdlet devolve $false. Caso contrário, ele retorna $true.
Exemplo 2: Testar o percurso de um perfil
Test-Path -Path $PROFILE
False
Test-Path -Path $PROFILE -IsValid
True
Estes comandos testam o percurso do perfil PowerShell.
O primeiro comando determina se todos os elementos do caminho existem. O segundo comando determina se a sintaxe do caminho está correta. Neste caso, o caminho é $false, mas a sintaxe está correta $true. Estes comandos usam $PROFILE, a variável automática que aponta para a localização 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: Verifique se existem ficheiros além de um tipo especificado
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Este comando verifica se existem ficheiros no diretório Edifícios Comerciais para além de .dwg ficheiros.
O comando usa o parâmetro Path para especificar o caminho. Como o caminho inclui um espaço, o caminho está incluído entre aspas. O asterisco no final do percurso indica o conteúdo do diretório de Edifícios Comerciais. Com caminhos longos, como este, escreve as primeiras letras do caminho e depois usa a tecla TAB para completar o caminho.
O comando especifica o parâmetro Exclude para especificar ficheiros a omitir da avaliação.
Neste caso, como o diretório contém apenas .dwg ficheiros, o resultado é $false.
Exemplo 4: Verificar se há um ficheiro
Test-Path -Path $PROFILE -PathType Leaf
True
Este comando verifica se o caminho armazenado na $PROFILE variável conduz a um ficheiro. Neste caso, como o perfil PowerShell é um .ps1 ficheiro, o cmdlet devolve $true.
Exemplo 5: Verificar caminhos no Registo
Estes comandos são usados Test-Path com o fornecedor do Registo PowerShell.
O primeiro comando testa se o caminho do registo do Microsoft. A chave de registo PowerShell está correta no sistema. Se o PowerShell estiver instalado corretamente, o cmdlet devolve $true.
Importante
Test-Path não funciona corretamente com todos os fornecedores PowerShell. Por exemplo, podes usar Test-Path para testar o caminho de uma chave de registo, mas se a usares para testar o caminho de uma entrada de registo, ela retorna $falsesempre , mesmo que a entrada de registo 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: Teste se um ficheiro é mais recente do que uma data especificada
Este comando utiliza o parâmetro dinâmico NewerThan para determinar se o pwsh.exe ficheiro no computador é mais recente do que July 13, 2009.
O parâmetro NewerThan funciona apenas em discos de sistema de ficheiros.
Test-Path $PSHOME\pwsh.exe -NewerThan "July 13, 2009"
True
Exemplo 7: Testar um caminho com valor nulo
O erro devolvido para null, array de null ou array vazio é um erro não terminante. Pode ser suprimido usando -ErrorAction SilentlyContinue. O exemplo seguinte mostra todos os casos que devolvem 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: Teste um caminho com espaço em branco como valor
Quando uma cadeia de espaços em branco é fornecida para o parâmetro Path , ela retorna $false. Isto é uma alteração em relação ao PowerShell 5.1 do Windows. Quando uma cadeia vazia é fornecida, Test-Path devolve um erro.
O exemplo seguinte mostra espaços em branco e cadeias vazias.
Test-Path ' '
Test-Path ''
False
False
Exemplo 9: Testar um caminho que pode ter um disco inválido
Quando testas um caminho que inclui uma especificação do disco, testar a validade do caminho falha se o disco não existir. Pode prefixar o disco com o nome do fornecedor para contornar este problema.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Parâmetros
-Credential
Note
Esse parâmetro não é suportado por nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.
Propriedades dos parâmetros
| Tipo: | PSCredential |
| Valor predefinido: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
-Exclude
Especifica os itens que este comandante omite. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt. Caracteres coringa são permitidos.
Propriedades dos parâmetros
| Tipo: | String[] |
| Valor predefinido: | None |
| Suporta carateres universais: | True |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Filter
Especifica um filtro no formato ou linguagem do fornecedor. O valor desse parâmetro qualifica o parâmetro Path. A sintaxe do filtro, incluindo o uso de caracteres curinga, depende do fornecedor. Os filtros são mais eficientes do que outros parâmetros, porque o fornecedor aplica-os quando recupera os objetos, em vez de o PowerShell filtrar os objetos depois de recuperados.
Propriedades dos parâmetros
| Tipo: | String |
| Valor predefinido: | None |
| Suporta carateres universais: | True |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Include
Especifica os caminhos que este cmdlet testa. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt. Caracteres coringa são permitidos.
Propriedades dos parâmetros
| Tipo: | String[] |
| Valor predefinido: | None |
| Suporta carateres universais: | True |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-IsValid
Indica que este cmdlet testa a sintaxe do caminho, independentemente de existirem ou não os elementos do caminho. Este cmdlet devolve $true se a sintaxe do caminho for válida e $false se não for. Se o caminho a ser testado incluir uma especificação do disco, o cmdlet devolve false quando o disco não existe. O PowerShell devolve falsos porque não sabe qual fornecedor de discos testar.
Note
Uma alteração marcante nas APIs de Path foi introduzida no .NET 2.1. Esses métodos já não verificam caracteres de caminho inválidos. Esta mudança causou uma regressão no PowerShell, onde a verificação IsValid deixou de testar caracteres inválidos. A regressão será abordada numa versão futura. Para mais informações, consulte Breaking changes in .NET Core 2.1.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Valor predefinido: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-LiteralPath
Especifica um caminho a ser testado. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como foi escrito. Nenhum caractere é interpretado como um caractere curinga. Se o caminho incluir caracteres que poderiam ser interpretados pelo PowerShell como sequências de escape, deve encerrar o caminho entre aspas para que não sejam interpretados.
Propriedades dos parâmetros
| Tipo: | String[] |
| Valor predefinido: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | PSPath, LP |
Conjuntos de parâmetros
LiteralPath
| Posto: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
-NewerThan
Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem.
Especifique uma hora como um objeto DateTime .
Antes do PowerShell 7.5, o cmdlet ignora:
- Este parâmetro quando especifica PathType como qualquer valor que não
Anyseja . - O parâmetro OlderThan quando usado com este parâmetro.
- Este parâmetro quando o Path aponta para um diretório.
A partir do PowerShell 7.5, pode usar este parâmetro com qualquer valor para o parâmetro PathType , para testar um intervalo de datas com o parâmetro OlderThan e para testar a idade dos diretórios.
Para obter mais informações, consulte about_FileSystem_Provider.
Propriedades dos parâmetros
| Tipo: | |
| Valor predefinido: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-OlderThan
Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem.
Especifique uma hora como um objeto DateTime .
Antes do PowerShell 7.5, o cmdlet ignora:
- Este parâmetro quando especifica PathType como qualquer valor que não
Anyseja . - Este parâmetro quando usado com o parâmetro NewerThan .
- Este parâmetro quando o Path aponta para um diretório.
A partir do PowerShell 7.5, pode usar este parâmetro com qualquer valor para o parâmetro PathType , para testar um intervalo de datas com o parâmetro NewerThan e para testar a idade dos diretórios.
Para obter mais informações, consulte about_FileSystem_Provider.
Propriedades dos parâmetros
| Tipo: | |
| Valor predefinido: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Path
Especifica um caminho a ser testado. Caracteres coringa são permitidos. Se o caminho incluir espaços, inclua-o entre aspas.
Propriedades dos parâmetros
| Tipo: | String[] |
| Valor predefinido: | None |
| Suporta carateres universais: | True |
| NãoMostrar: | False |
Conjuntos de parâmetros
Path
| Posto: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | True |
| Valor dos restantes argumentos: | False |
-PathType
Especifica o tipo do elemento final no caminho. Este cmdlet retorna $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 contenha outros elementos, como uma chave de diretório ou de registo. -
Leaf- Um elemento que não contém outros elementos, como um ficheiro. -
Any- Ou um recipiente ou uma folha.
Indica se o elemento final no caminho é de um tipo particular.
Caution
Até à versão 6.1.2 do PowerShell, quando os switches IsValid e PathType são especificados em conjunto, o Test-Path cmdlet ignora o switch PathType e apenas valida o caminho sintático sem validar o tipo de caminho.
De acordo com a edição #8607, corrigir este comportamento pode ser uma alteração decisiva numa versão futura, onde os switches IsValid e PathType pertencem a conjuntos de parâmetros separados e, por isso, não podem ser usados em conjunto, evitando esta confusão.
Propriedades dos parâmetros
| Tipo: | TestPathType |
| Valor predefinido: | None |
| Valores aceites: | Any, Container, Leaf |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | Tipo |
Conjuntos de parâmetros
(All)
| Posto: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | 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 canalizar uma cadeia de caracteres que contém um caminho, mas não um caminho literal, para esse cmdlet.
Saídas
Boolean
O cmdlet devolve um valor booleano .
Notas
Os cmdlets que contêm o substantivo Path (os cmdlets Path ) trabalham com path e devolvem os nomes num formato conciso que todos os fornecedores PowerShell podem interpretar. São concebidos para uso em programas e scripts onde se quer mostrar todo ou parte de um caminho num formato específico. Usa-os como usarias Dirname, Normpath, Realpath, Join ou outros manipuladores de caminhos.
É Test-Path concebido para trabalhar com os dados expostos por qualquer fornecedor. Para listar os provedores disponíveis em sua sessão, digite Get-PSProvider. Para obter mais informações, consulte about_Providers.