Você usa o PowerShell para criar, ler, atualizar e excluir arquivos? Se sim, você provavelmente já encontrou erros quando os arquivos de destino não existem ou já existem. Felizmente, existem maneiras no PowerShell de verificar se um arquivo existe antes de fazer qualquer coisa com ele.
Por exemplo, em vez de permitir que seu código crie o arquivo imediatamente, é melhor testar se o arquivo já existe. Conforme mostrado na captura de tela abaixo, você pode escrever um código melhor e obter uma saída clara.

Neste artigo, você aprenderá as diferentes maneiras de usar o PowerShell para verificar se um arquivo existe. Você também aprenderá como usar cada uma dessas maneiras para produzir um código melhor e obter resultados com lógica de tratamento de erros.
Pré-requisitos
Reduza as chamadas para o service desk e atualize as credenciais em cache para usuários remotos, mesmo sem VPN, com uma solução de redefinição de senha de autoatendimento. Obtenha uma demonstração do Specops uReset!
Este artigo é um guia prático no qual você aprenderá com diferentes exemplos. E para seguir os exemplos, você precisará do seguinte:
- Editor de código. Os recomendados são o Visual Studio Code e o Atom, que funcionam em várias plataformas. Você também pode usar o Windows PowerShell ISE se estiver trabalhando em um computador com Windows.
- Windows PowerShell 5.1 (Desktop) ou PowerShell 7.1 (Core). Os comandos e scripts neste artigo se aplicam a ambas as edições do PowerShell. Independentemente de você estar usando Windows, Linux ou macOS, você estará bem desde que tenha o PowerShell instalado.
Relacionado: Como Baixar e Instalar o PowerShell 7 no Windows, Linux e macOS
Usando o PowerShell para Verificar Se o Arquivo Existe
Este artigo cobre três métodos para usar o PowerShell para verificar se um arquivo existe. O uso desses três métodos difere, mas o conceito e o objetivo final são os mesmos. Essas três maneiras são:
Test-Path
Cmdlet.Get-Item
eGet-ChildItem
Cmdlet.System.IO.File
Class.
Haverá exemplos e demonstrações de cada um desses três métodos, incluindo como usá-los com tratamento de erro.
Usando Test-Path
A primeira maneira é o cmdlet Test-Path
, especificamente projetado para determinar se um caminho ou arquivo existe. Ao usar este cmdlet para testar se um arquivo existe, o resultado é true ou false. O resultado indica se o arquivo existe ou não.
Abaixo está a sintaxe básica para fazer o cmdlet Test-Path
funcionar ao verificar um arquivo.
Por exemplo, se precisar verificar se um arquivo com o nome C:\temp\important_file.txt existe, use o código abaixo. Note que a parte -PathType Leaf
diz ao cmdlet para verificar um arquivo e não um diretório explicitamente.
Quando executar o comando acima no PowerShell, o resultado retornará True se o arquivo existir. Caso contrário, o resultado será False, como pode ser visto na captura de tela abaixo.

Relacionado: Como Usar o Cmdlet Test-Path do PowerShell
Exemplo: Criando um Arquivo Se o Arquivo Não Existir
Este exemplo é um caso de uso típico para criar arquivos em um local especificado. Para evitar o erro “arquivo já existe”, o script verifica se o arquivo já existe antes de criá-lo. Se o arquivo existir, o script exibe uma mensagem e não tenta criar o arquivo novamente.
Copie o código abaixo e salve-o em um arquivo chamado Create-NewFile.ps1. Certifique-se de alterar o valor da variável $path
se desejar alterar o local de saída do arquivo. Após salvar o script, execute-o no PowerShell para testar.
A captura de tela abaixo mostra as duas saídas diferentes. A primeira é ao executar o script quando o arquivo não existe. A segunda é após a criação do arquivo, e ele já existe.

Relacionado: De Volta aos Fundamentos: Como Executar um Script do PowerShell
Usando Get-Item e Get-ChildItem
O propósito do cmdlet Get-Item
é obter o item em uma localização especificada. Em comparação, o cmdlet Get-ChildItem
é para obter os itens e subitens em uma ou mais localizações especificadas. A funcionalidade desses dois cmdlets não é explicitamente verificar se os arquivos existem.
O que acontece quando você usa Get-Item
ou Get-ChildItem
para obter um item que não existe? Você receberá um erro para cada arquivo ausente. Tome os comandos abaixo como exemplo.
Suponha que o arquivo c:\temp\important_file.txt não exista. Cada um dos comandos acima retorna um erro. Como você pode ver pelo exemplo abaixo, a mensagem de erro para ambos os comandos é a mesma.

Exemplo: Arquivando o Arquivo Existente e Criando um Novo Arquivo
Neste exemplo, o script utiliza os cmdlets Get-Item
e Test-Path
. A lógica deste script é fazer o seguinte:
- Teste se a pasta de arquivo existe usando
Test-Path
.- Se a pasta de arquivo não existir, o script cria uma nova pasta de arquivo nesse formato –
yyyy-MMM-dd_hh-mm-ss-tt
. - Em seguida, o script move o arquivo antigo para a pasta de arquivo.
- Se a pasta de arquivo não existir, o script cria uma nova pasta de arquivo nesse formato –
- Teste se o arquivo já existe usando
Get-Item
.- Se o arquivo existir, o script o move para a pasta de arquivo primeiro. Depois, o script cria o novo arquivo no local original.
- Se o arquivo não existir, o script cria o novo arquivo.
Copie o código abaixo e salve-o como Create-NewFileAfterArchive.ps1. Depois de salvar o script, execute-o no PowerShell e verifique os resultados.
Dica: O parâmetro
-ErrorAction Ignore
suprime o erro (não será exibido no console) e também não registra o erro na variável automática$error
.
Na captura de tela abaixo, a primeira execução do script criou o arquivo c:\temp\important_file.txt. As execuções sucessivas do script criaram uma nova pasta de arquivamento a cada vez, moveram o arquivo existente para a pasta de arquivamento e, em seguida, criaram um novo arquivo em c:\temp\important_file.txt.

Usando o Método .NET [System.IO.File]::Exists()
O último método a ser aprendido neste artigo é a classe .NET System.IO.File, especificamente o método Exists()
. Uma das forças do PowerShell é sua capacidade de importar e usar classes e métodos .NET.
Por exemplo, para usar o método Exists()
em PowerShell para verificar se um arquivo existe, use o código abaixo.
O método acima produz um resultado booleano – true ou false. Se o resultado retornar true, significa que o arquivo alvo existe. Caso contrário, o resultado retornado é false quando o arquivo alvo não existe.
No código de exemplo abaixo, o comando verifica a existência do arquivo c:\temp\important_file.txt.
Como você pode ver no resultado abaixo, o resultado retorna verdadeiro, confirmando que o arquivo existe.

Com este método .NET, você também pode usar operações ternárias como o exemplo abaixo. Em vez de mostrar os resultados padrão verdadeiro ou falso, você pode personalizar a mensagem de resultado com uma implementação mais curta. No entanto, o operador ternário neste exemplo só se aplica ao PowerShell 7+.
Exemplo: Atualizando o Conteúdo do Arquivo Se o Arquivo Existir
Este script de exemplo atualiza o arquivo de texto anexando um novo valor GUID. No entanto, a atualização do conteúdo só ocorre se o arquivo existir. Caso contrário, o script exibe uma mensagem e não faz mais nada.
Copie o script abaixo e salve-o como Update-FileContents.ps1. Altere o valor do caminho do arquivo da variável $file
se necessário. Em seguida, execute o script no PowerShell para testá-lo.
Você pode ver na captura de tela abaixo que o script atualizou o arquivo durante cada execução. A atualização ocorreu porque o método [System.IO.File]::Exists()
confirmou que o arquivo c:\temp\important_file.txt existe.
No final, usando o comando gc c:\temp\important_file.txt
para ler o conteúdo do arquivo, confirmou-se que o script atualizou o arquivo com os valores GUID.

Relacionado: Usando Aceleradores de Tipos de Dados do PowerShell para Acelerar a Codificação
Conclusão
Reduza as chamadas para o service desk & atualize as credenciais do cache para usuários remotos mesmo sem VPN com uma solução de redefinição de senha de autoatendimento. Obtenha uma Demonstração do Specops uReset!
Neste artigo, você aprendeu que há mais de uma maneira de usar o PowerShell para verificar se um arquivo existe. É uma boa prática verificar a presença de um arquivo antes de fazer quaisquer modificações relacionadas ao arquivo.
Você aprendeu sobre o uso dos cmdlets Get-Item
, Get-ChildItem
e Test-Path
. Bem como o método [System.IO.File]::Exists() .NET
. Os exemplos mostraram como usar técnicas e como combiná-las com lógica de tratamento de erros.
Pare de suportar essas mensagens de erro. Supere-as adicionando código para verificar se um arquivo existe antes de qualquer operação relacionada a arquivos. As técnicas que você aprendeu aqui cobrem apenas o básico, e agora cabe a você melhorá-las.
Source:
https://adamtheautomator.com/powershell-check-if-file-exists/