Gostaria de validar se uma string fornecida pelo usuário é um caminho para um arquivo ou diretório.
$Path = 'some input string'
if (!(Test-Path -LiteralPath $Path)) {
Write-Error "${Path}: No such file or directory"
exit 1
}
O problema é que Test-Path
não é possível diferenciar, por exemplo, um diretório de uma chave de registro...
Como posso fazer isso?
Você pode usar
Get-Item
, provavelmente com-LiteralPath
em vez de-Path
se não quiser que ele interprete curingas. Com base na saída, você pode determinar:SilentlyContinue
paraStop
se quiser que o cmdlet lance um erro de encerramento em vez de você lançar o erro manualmente..PSProvider
propriedade.FileSystem
, você poderá determinar se o caminho é um arquivo ou diretório observando a.PSIsContainer
propriedade.Em resumo, você poderia fazer:
Você pode usar
Resolve-Path
para descobrir informações do provedor sobre um determinado caminho de item: